Class StaticQueryContext
- java.lang.Object
-
- net.sf.saxon.query.StaticQueryContext
-
- Direct Known Subclasses:
StaticQueryContextPE
public class StaticQueryContext extends java.lang.Object
StaticQueryContext contains information used to build a StaticContext for use when processing XQuery expressions.Despite its name,
StaticQueryContext
no longer implements theStaticContext
interface, which means it cannot be used directly by Saxon when parsing a query. Instead it is first copied to create aQueryModule
object, which does implement theStaticContext
interface.The application constructs a StaticQueryContext and initializes it with information about the context, for example, default namespaces, base URI, and so on. When a query is compiled using this StaticQueryContext, the query parser makes a copy of the StaticQueryContext and uses this internally, modifying it with information obtained from the query prolog, as well as information such as namespace and variable declarations that can occur at any point in the query. The query parser does not modify the original StaticQueryContext supplied by the calling application, which may therefore be used for compiling multiple queries, serially or even in multiple threads.
This class forms part of Saxon's published XQuery API. Methods that are considered stable are labelled with the JavaDoc "since" tag. The value 8.4 indicates a method introduced at or before Saxon 8.4; other values indicate the version at which the method was introduced.
In the longer term, this entire API may at some stage be superseded by a proposed standard Java API for XQuery.
- Since:
- 8.4
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
StaticQueryContext()
Private constructor used when copying a contextStaticQueryContext(Configuration config)
Create a StaticQueryContext using a given Configuration.StaticQueryContext(Configuration config, boolean initialize)
Create a StaticQueryContext using a given Configuration.StaticQueryContext(StaticQueryContext c)
Create a copy of a supplied StaticQueryContext
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
clearDeclaredGlobalVariables()
Clear all declared global variablesvoid
clearNamespaces()
Clear all the user-declared namespacesvoid
compileLibrary(java.io.InputStream source, java.lang.String encoding)
Prepare an XQuery library module for subsequent evaluation.void
compileLibrary(java.io.Reader source)
Prepare an XQuery library module for subsequent evaluation.void
compileLibrary(java.lang.String query)
Compile an XQuery library module for subsequent evaluation.XQueryExpression
compileQuery(java.io.InputStream source, java.lang.String encoding)
Prepare an XQuery query for subsequent evaluation.XQueryExpression
compileQuery(java.io.Reader source)
Prepare an XQuery query for subsequent evaluation.XQueryExpression
compileQuery(java.lang.String query)
Prepare an XQuery query for subsequent evaluation.void
copyFrom(StaticQueryContext c)
Copy details from another StaticQueryContextvoid
declareDefaultCollation(java.lang.String name)
Set the default collation.void
declareGlobalVariable(StructuredQName qName, SequenceType type, GroundedValue value, boolean external)
Declare a global variable.void
declareNamespace(java.lang.String prefix, NamespaceUri uri)
Declare a namespace whose prefix can be used in expressions.java.lang.String
getBaseURI()
Get the Base URI of the query, for resolving any relative URI's used in the expression.CodeInjector
getCodeInjector()
Get any CodeInjector that has been registeredjava.lang.Iterable<QueryLibrary>
getCompiledLibraries()
QueryLibrary
getCompiledLibrary(NamespaceUri namespace)
Get a previously compiled library moduleConfiguration
getConfiguration()
Get the Configuration optionsint
getConstructionMode()
Get the current construction modejava.lang.String
getDefaultCollationName()
Get the name of the default collation.NamespaceUri
getDefaultElementNamespace()
Get the default namespace for elements and typesNamespaceUri
getDefaultFunctionNamespace()
Get the default function namespacejavax.xml.transform.ErrorListener
getErrorListener()
Deprecated.since 10.0: usegetErrorReporter()
ErrorReporter
getErrorReporter()
Get the error reporter: that is, a used-supplied object that is to receive notification of static errors found in the stylesheetFunctionLibrary
getExtensionFunctionLibrary()
Get any extension function library that was previously set.int
getLanguageVersion()
Get the language versionLocation
getModuleLocation()
Get the module location.ModuleURIResolver
getModuleURIResolver()
Get the user-defined ModuleURIResolver for resolving URIs used in "import module" declarations in the XQuery prolog; returns null if none has been explicitly set either on the StaticQueryContext or on the Configuration.NamePool
getNamePool()
Get the NamePool used for compiling expressionsNamespaceUri
getNamespaceForPrefix(java.lang.String prefix)
Get the namespace URI for a given prefix, which must have been declared using the methoddeclareNamespace(java.lang.String, net.sf.saxon.om.NamespaceUri)
.OptimizerOptions
getOptimizerOptions()
Get the optimizer options being used for compiling queries that use this static context.ItemType
getRequiredContextItemType()
Get the required type of the context item.java.lang.String
getSystemId()
Get the system ID of the container of the expression.UnprefixedElementMatchingPolicy
getUnprefixedElementMatchingPolicy()
Get the matching policy for unprefixed element names in axis steps.protected java.util.HashMap<java.lang.String,NamespaceUri>
getUserDeclaredNamespaces()
Get the map of user-declared namespacesboolean
isCompileWithTracing()
Ask whether compile-time generation of trace code was requestedboolean
isEmptyLeast()
Ask where an empty sequence should appear in the collation order, if not otherwise specified in the "order by" clauseboolean
isInheritNamespaces()
Get the namespace inheritance modeboolean
isPreserveBoundarySpace()
Ask whether the policy for boundary space is "preserve" or "strip"boolean
isPreserveNamespaces()
Get the namespace copy modeboolean
isSchemaAware()
Ask whether this query is schema-awareboolean
isStreaming()
Ask whether the streaming option has been set, that is, whether subsequent calls on compile() will compile queries to be capable of executing in streaming mode.boolean
isUpdating()
Ask whether XQuery Update is allowedboolean
isUpdatingEnabled()
Ask whether the query is allowed to be updatingjava.lang.Iterable<GlobalVariable>
iterateDeclaredGlobalVariables()
Iterator over all the declared global variablesjava.util.Iterator<java.lang.String>
iterateDeclaredPrefixes()
Get the namespace prefixes that have been declared using the methoddeclareNamespace(java.lang.String, net.sf.saxon.om.NamespaceUri)
Executable
makeExecutable()
Get the executable containing this queryvoid
reset()
Reset the state of this StaticQueryContext to an uninitialized statevoid
setBaseURI(java.lang.String baseURI)
Set the Base URI of the queryvoid
setCodeInjector(CodeInjector injector)
Request that the parser should insert custom code into the expression tree by calling a supplied CodeInjector to process each expression as it is parsed, for example for tracing or performance measurementvoid
setCompileWithTracing(boolean trace)
Request compile-time generation of trace code (or not)void
setConfiguration(Configuration config)
Set the Configuration optionsvoid
setConstructionMode(int mode)
Set the construction mode for this modulevoid
setDefaultElementNamespace(NamespaceUri uri)
Set the default element namespacevoid
setDefaultFunctionNamespace(NamespaceUri defaultFunctionNamespace)
Set the default function namespacevoid
setEmptyLeast(boolean least)
Set the option for where an empty sequence appears in the collation order, if not otherwise specified in the "order by" clausevoid
setErrorListener(javax.xml.transform.ErrorListener listener)
Deprecated.since 10.0: usesetErrorReporter(ErrorReporter)
void
setErrorReporter(ErrorReporter reporter)
Set an error reporter: that is, a used-supplied object that is to receive notification of static errors found in the stylesheetvoid
setInheritNamespaces(boolean inherit)
Set the namespace inheritance modevoid
setLanguageVersion(int version)
Set the language version.void
setModuleLocation(Location location)
Set the module location.void
setModuleURIResolver(ModuleURIResolver resolver)
Set a user-defined ModuleURIResolver for resolving URIs used in "import module" declarations in the XQuery prolog.void
setOptimizerOptions(OptimizerOptions options)
Set the optimizer options to be used for compiling queries that use this static context.void
setPreserveBoundarySpace(boolean preserve)
Set the policy for preserving boundary spacevoid
setPreserveNamespaces(boolean inherit)
Set the namespace copy modevoid
setRequiredContextItemType(ItemType type)
Declare the static type of the context item.void
setSchemaAware(boolean aware)
Say whether this query is schema-awarevoid
setStreaming(boolean option)
Say whether the query should be compiled and evaluated to use streaming.void
setUnprefixedElementMatchingPolicy(UnprefixedElementMatchingPolicy unprefixedElementMatchingPolicy)
Set the matching policy for unprefixed element names in axis steps.void
setUpdatingEnabled(boolean updating)
Say whether the query is allowed to be updating.
-
-
-
Constructor Detail
-
StaticQueryContext
protected StaticQueryContext()
Private constructor used when copying a context
-
StaticQueryContext
public StaticQueryContext(Configuration config)
Create a StaticQueryContext using a given Configuration. This creates a StaticQueryContext for a main module (that is, a module that is not a library module). The static query context is initialized from the default static query context held in the configuration.- Parameters:
config
- the Saxon Configuration- Since:
- 8.4
-
StaticQueryContext
public StaticQueryContext(Configuration config, boolean initialize)
Create a StaticQueryContext using a given Configuration. This creates a StaticQueryContext for a main module (that is, a module that is not a library module). The static query context is initialized from the default static query context held in the configuration only if theinitialize
argument is set to true.- Parameters:
config
- the Saxon Configurationinitialize
- specifies whether the static context should be initialized using defaults held in the configuration. Setting this to true has the same effect as calling the single-argument constructor. Setting it to false is typically used only when creating the default static query context held by the configuration.- Since:
- 9.9
-
StaticQueryContext
public StaticQueryContext(StaticQueryContext c)
Create a copy of a supplied StaticQueryContext- Parameters:
c
- the StaticQueryContext to be copied
-
-
Method Detail
-
copyFrom
public void copyFrom(StaticQueryContext c)
Copy details from another StaticQueryContext- Parameters:
c
- the other StaticQueryContext
-
reset
public void reset()
Reset the state of this StaticQueryContext to an uninitialized state- Since:
- 8.4
-
setConfiguration
public void setConfiguration(Configuration config)
Set the Configuration options- Parameters:
config
- the Saxon Configuration- Throws:
java.lang.IllegalArgumentException
- if the configuration supplied is different from the existing configuration- Since:
- 8.4
-
getConfiguration
public Configuration getConfiguration()
Get the Configuration options- Returns:
- the Saxon configuration
- Since:
- 8.4
-
makeExecutable
public Executable makeExecutable()
Get the executable containing this query- Returns:
- the executable (which is newly created by this method)
-
setSchemaAware
public void setSchemaAware(boolean aware)
Say whether this query is schema-aware- Parameters:
aware
- true if this query is schema-aware- Since:
- 9.2.1.2
-
isSchemaAware
public boolean isSchemaAware()
Ask whether this query is schema-aware- Returns:
- true if this query is schema-aware
- Since:
- 9.2.1.2
-
setStreaming
public void setStreaming(boolean option)
Say whether the query should be compiled and evaluated to use streaming. This affects subsequent calls on the compile() methods. This option requires Saxon-EE.- Parameters:
option
- if true, the compiler will attempt to compile a query to be capable of executing in streaming mode. If the query cannot be streamed, a compile-time exception is reported. In streaming mode, the source document is supplied as a stream, and no tree is built in memory. The default is false. Setting the value to true has the side-effect of setting the required context item type to "document node"; this is to ensure that expresions such as //BOOK are streamable.- Since:
- 9.6
-
isStreaming
public boolean isStreaming()
Ask whether the streaming option has been set, that is, whether subsequent calls on compile() will compile queries to be capable of executing in streaming mode.- Returns:
- true if the streaming option has been set.
- Since:
- 9.6
-
setBaseURI
public void setBaseURI(java.lang.String baseURI)
Set the Base URI of the query- Parameters:
baseURI
- the base URI of the query, or null to indicate that no base URI is available- Since:
- 8.4
-
setLanguageVersion
public void setLanguageVersion(int version)
Set the language version.- Parameters:
version
- The XQuery language version. Must be 10 (="1.0") or 30 (="3.0") or 31 (="3.1").- Since:
- 9.2; changed in 9.3 to expect a DecimalValue rather than a string. Changed in 9.7 to accept an int (30 = "3.0") and to allow "3.1". From 9.8.0.3 the supplied value was ignored and the language version was always set to "3.1". From 11.0 the value 40 was accepted.
-
getLanguageVersion
public int getLanguageVersion()
Get the language version- Returns:
- the language version. Either "1.0" or "1.1". Default is "1.0".
- Since:
- 9.2; changed in 9.3 to return a DecimalValue rather than a string; changed in 9.7 to return an int (30 = "3.0" and so on). Changed in 9.8.0.3 to always return 31. Changed in 11.0 to return 31 or 40.
-
getExtensionFunctionLibrary
public FunctionLibrary getExtensionFunctionLibrary()
Get any extension function library that was previously set.- Returns:
- the extension function library, or null if none has been set. The result will always be null if called in Saxon-HE; setting an extension function library requires the Saxon-PE or Saxon-EE versions of this class.
- Since:
- 9.4
-
isCompileWithTracing
public boolean isCompileWithTracing()
Ask whether compile-time generation of trace code was requested- Returns:
- true if compile-time generation of code was requested
- Since:
- 9.0
-
setCompileWithTracing
public void setCompileWithTracing(boolean trace)
Request compile-time generation of trace code (or not)- Parameters:
trace
- true if compile-time generation of trace code is required- Since:
- 9.0
-
setCodeInjector
public void setCodeInjector(CodeInjector injector)
Request that the parser should insert custom code into the expression tree by calling a supplied CodeInjector to process each expression as it is parsed, for example for tracing or performance measurement- Parameters:
injector
- the CodeInjector to be used. May be null, in which case no code is injected- Since:
- 9.4
-
getCodeInjector
public CodeInjector getCodeInjector()
Get any CodeInjector that has been registered- Returns:
- the registered CodeInjector, or null
- Since:
- 9.4
-
isUpdating
public boolean isUpdating()
Ask whether XQuery Update is allowed- Returns:
- true if XQuery update is supported by queries using this context
-
setInheritNamespaces
public void setInheritNamespaces(boolean inherit)
Set the namespace inheritance mode- Parameters:
inherit
- true if namespaces are inherited, false if not- Since:
- 8.4
-
isInheritNamespaces
public boolean isInheritNamespaces()
Get the namespace inheritance mode- Returns:
- true if namespaces are inherited, false if not
- Since:
- 8.4
-
setPreserveNamespaces
public void setPreserveNamespaces(boolean inherit)
Set the namespace copy mode- Parameters:
inherit
- true if namespaces are preserved, false if not- Since:
- 8.4
-
isPreserveNamespaces
public boolean isPreserveNamespaces()
Get the namespace copy mode- Returns:
- true if namespaces are preserved, false if not
- Since:
- 8.4
-
setConstructionMode
public void setConstructionMode(int mode)
Set the construction mode for this module- Parameters:
mode
- one ofValidation.STRIP
,Validation.PRESERVE
- Since:
- 8.4
-
getConstructionMode
public int getConstructionMode()
Get the current construction mode- Returns:
- one of
Validation.STRIP
,Validation.PRESERVE
- Since:
- 8.4
-
setModuleLocation
public void setModuleLocation(Location location)
Set the module location. Normally the module location is assumed to be line 1, column 1 of the resource identified by the base URI. But a different location can be set, for example if the query is embedded in an XML document, and this information will be available in diagnostics.- Parameters:
location
- the module location- Since:
- 9.7
-
getModuleLocation
public Location getModuleLocation()
Get the module location. Normally the module location is assumed to be line 1, column 1 of the resource identified by the base URI. But a different location can be set, for example if the query is embedded in an XML document, and this information will be available in diagnostics.- Returns:
- the module location
- Since:
- 9.7
-
setOptimizerOptions
public void setOptimizerOptions(OptimizerOptions options)
Set the optimizer options to be used for compiling queries that use this static context. By default the optimizer options set in theConfiguration
are used.- Parameters:
options
- the optimizer options to be used
-
getOptimizerOptions
public OptimizerOptions getOptimizerOptions()
Get the optimizer options being used for compiling queries that use this static context. By default the optimizer options set in theConfiguration
are used.- Returns:
- the optimizer options being used
-
compileQuery
public XQueryExpression compileQuery(java.lang.String query) throws XPathException
Prepare an XQuery query for subsequent evaluation. The source text of the query is supplied as a String. The base URI of the query is taken from the static context, and defaults to the current working directory.Note that this interface makes the caller responsible for decoding the query and presenting it as a string of characters. This means it is likely that any encoding specified in the query prolog will be ignored.
- Parameters:
query
- The XQuery query to be evaluated, supplied as a string.- Returns:
- an XQueryExpression object representing the prepared expression
- Throws:
XPathException
- if the syntax of the expression is wrong, or if it references namespaces, variables, or functions that have not been declared, or contains other static errors.- Since:
- 8.4
-
compileQuery
public XQueryExpression compileQuery(java.io.Reader source) throws XPathException, java.io.IOException
Prepare an XQuery query for subsequent evaluation. The Query is supplied in the form of a Reader. The base URI of the query is taken from the static context, and defaults to the current working directory.Note that this interface makes the Reader responsible for decoding the query and presenting it as a stream of characters. This means it is likely that any encoding specified in the query prolog will be ignored. Also, some implementations of Reader cannot handle a byte order mark.
- Parameters:
source
- A Reader giving access to the text of the XQuery query to be compiled.- Returns:
- an XPathExpression object representing the prepared expression.
- Throws:
XPathException
- if the syntax of the expression is wrong, or if it references namespaces, variables, or functions that have not been declared, or any other static error is reported.java.io.IOException
- if a failure occurs reading the supplied input.- Since:
- 8.4
-
compileQuery
public XQueryExpression compileQuery(java.io.InputStream source, java.lang.String encoding) throws XPathException
Prepare an XQuery query for subsequent evaluation. The Query is supplied in the form of a InputStream, with an optional encoding. If the encoding is not specified, the query parser attempts to obtain the encoding by inspecting the input stream: it looks specifically for a byte order mark, and for the encoding option in the version declaration of an XQuery prolog. The encoding defaults to UTF-8. The base URI of the query is taken from the static context, and defaults to the current working directory.- Parameters:
source
- An InputStream giving access to the text of the XQuery query to be compiled, as a stream of octetsencoding
- The encoding used to translate characters to octets in the query source. The parameter may be null: in this case the query parser attempts to infer the encoding by inspecting the source, and if that fails, it assumes UTF-8 encoding- Returns:
- an XPathExpression object representing the prepared expression.
- Throws:
XPathException
- if the syntax of the expression is wrong, or if it references namespaces, variables, or functions that have not been declared, or any other static error is reported.- Since:
- 8.5
-
compileLibrary
public void compileLibrary(java.lang.String query) throws XPathException
Compile an XQuery library module for subsequent evaluation. This method is supported only in Saxon-EE- Parameters:
query
- the content of the module, as a string- Throws:
XPathException
- if a static error exists in the queryjava.lang.UnsupportedOperationException
- if not using Saxon-EE- Since:
- 9.2 (changed in 9.3 to return void)
-
compileLibrary
public void compileLibrary(java.io.Reader source) throws XPathException, java.io.IOException
Prepare an XQuery library module for subsequent evaluation. This method is supported only in Saxon-EE. The effect of the method is that subsequent query compilations using this static context can import the module URI without specifying a location hint; the import then takes effect without requiring the module to be compiled each time it is imported.- Parameters:
source
- the content of the module, as a Reader which supplies the source code- Throws:
XPathException
- if a static error exists in the queryjava.io.IOException
- if the input cannot be readjava.lang.UnsupportedOperationException
- if not using Saxon-EE- Since:
- 9.2 (changed in 9.3 to return void)
-
compileLibrary
public void compileLibrary(java.io.InputStream source, java.lang.String encoding) throws XPathException, java.io.IOException
Prepare an XQuery library module for subsequent evaluation. This method is supported only in Saxon-EE. The effect of the method is that subsequent query compilations using this static context can import the module URI without specifying a location hint; the import then takes effect without requiring the module to be compiled each time it is imported.- Parameters:
source
- the content of the module, as an InputStream which supplies the source codeencoding
- the character encoding of the input stream. May be null, in which case the encoding is inferred, for example by looking at the query declaration- Throws:
XPathException
- if a static error exists in the queryjava.io.IOException
- if the input cannot be readjava.lang.UnsupportedOperationException
- if not using Saxon-EE- Since:
- 9.2 (changed in 9.3 to return void)
-
getCompiledLibrary
public QueryLibrary getCompiledLibrary(NamespaceUri namespace)
Get a previously compiled library module- Parameters:
namespace
- the module namespace- Returns:
- the QueryLibrary if a module with this namespace has been compiled as a library module; otherwise null. Always null when not using Saxon-EE.
- Since:
- 9.3
-
getCompiledLibraries
public java.lang.Iterable<QueryLibrary> getCompiledLibraries()
-
declareNamespace
public void declareNamespace(java.lang.String prefix, NamespaceUri uri)
Declare a namespace whose prefix can be used in expressions. This is equivalent to declaring a prefix in the Query prolog. Any namespace declared in the Query prolog overrides a namespace declared using this API.- Parameters:
prefix
- The namespace prefix. Must not be null. Setting this to "" means that the namespace will be used as the default namespace for elements and types.uri
- The namespace URI. Must not be null. The value "" (zero-length string) is used to undeclare a namespace; it is not an error if there is no existing binding for the namespace prefix.- Throws:
java.lang.NullPointerException
- if either the prefix or URI is nulljava.lang.IllegalArgumentException
- if the prefix is "xml" and the namespace is not the XML namespace, or vice versa; or if the prefix is "xmlns", or the URI is "http://www.w3.org/2000/xmlns/"- Since:
- 9.0
-
clearNamespaces
public void clearNamespaces()
Clear all the user-declared namespaces- Since:
- 9.0
-
getUserDeclaredNamespaces
protected java.util.HashMap<java.lang.String,NamespaceUri> getUserDeclaredNamespaces()
Get the map of user-declared namespaces- Returns:
- the user-declared namespaces
-
iterateDeclaredPrefixes
public java.util.Iterator<java.lang.String> iterateDeclaredPrefixes()
Get the namespace prefixes that have been declared using the methoddeclareNamespace(java.lang.String, net.sf.saxon.om.NamespaceUri)
- Returns:
- an iterator that returns the namespace prefixes that have been explicitly declared, as strings. The default namespace for elements and types will be included, using the prefix "".
- Since:
- 9.0
-
getNamespaceForPrefix
public NamespaceUri getNamespaceForPrefix(java.lang.String prefix)
Get the namespace URI for a given prefix, which must have been declared using the methoddeclareNamespace(java.lang.String, net.sf.saxon.om.NamespaceUri)
.- Parameters:
prefix
- the namespace prefix, or "" to represent the null prefix- Returns:
- the namespace URI. Returns "" to represent the non-namespace, null to indicate that the prefix has not been declared
-
getDefaultFunctionNamespace
public NamespaceUri getDefaultFunctionNamespace()
Get the default function namespace- Returns:
- the default function namespace (defaults to the fn: namespace)
- Since:
- 8.4
-
setDefaultFunctionNamespace
public void setDefaultFunctionNamespace(NamespaceUri defaultFunctionNamespace)
Set the default function namespace- Parameters:
defaultFunctionNamespace
- The namespace to be used for unprefixed function calls- Since:
- 8.4
-
setDefaultElementNamespace
public void setDefaultElementNamespace(NamespaceUri uri)
Set the default element namespace- Parameters:
uri
- the namespace URI to be used as the default namespace for elements and types- Since:
- 8.4
-
getDefaultElementNamespace
public NamespaceUri getDefaultElementNamespace()
Get the default namespace for elements and types- Returns:
- the namespace URI to be used as the default namespace for elements and types
- Since:
- 8.9 Modified in 8.9 to return the namespace URI as a string rather than an integer code
-
getUnprefixedElementMatchingPolicy
public UnprefixedElementMatchingPolicy getUnprefixedElementMatchingPolicy()
Get the matching policy for unprefixed element names in axis steps. This is a Saxon extension. The value can be any ofUnprefixedElementMatchingPolicy.DEFAULT_NAMESPACE
(the default), which uses the value ofgetDefaultElementNamespace()
, orUnprefixedElementMatchingPolicy.DEFAULT_NAMESPACE_OR_NONE
, which matches both the namespace given ingetDefaultElementNamespace()
and the null namespace, orUnprefixedElementMatchingPolicy.ANY_NAMESPACE
, which matches any namespace (that is, it matches by local name only).
-
setUnprefixedElementMatchingPolicy
public void setUnprefixedElementMatchingPolicy(UnprefixedElementMatchingPolicy unprefixedElementMatchingPolicy)
Set the matching policy for unprefixed element names in axis steps. This is a Saxon extension. The value can be any ofUnprefixedElementMatchingPolicy.DEFAULT_NAMESPACE
(the default), which uses the value ofgetDefaultElementNamespace()
, orUnprefixedElementMatchingPolicy.DEFAULT_NAMESPACE_OR_NONE
, which matches both the namespace given ingetDefaultElementNamespace()
and the null namespace, orUnprefixedElementMatchingPolicy.ANY_NAMESPACE
, which matches any namespace (that is, it matches by local name only).
-
declareGlobalVariable
public void declareGlobalVariable(StructuredQName qName, SequenceType type, GroundedValue value, boolean external) throws XPathException
Declare a global variable. This has the same effect as including a global variable declaration in the Query Prolog of the main query module. A static error occurs when compiling the query if the query prolog contains a declaration of the same variable.- Parameters:
qName
- the qualified name of the variabletype
- the declared type of the variablevalue
- the initial value of the variable. May be null if the variable is external.external
- true if the variable is external, that is, if its value may be set at run-time.- Throws:
java.lang.NullPointerException
- if the value is null, unless the variable is externalXPathException
- if the value of the variable is not consistent with its type.- Since:
- 9.1
-
iterateDeclaredGlobalVariables
public java.lang.Iterable<GlobalVariable> iterateDeclaredGlobalVariables()
Iterator over all the declared global variables- Returns:
- an iterator over all the global variables that have been declared. They are returned
as instances of class
GlobalVariable
- Since:
- 9.1
-
clearDeclaredGlobalVariables
public void clearDeclaredGlobalVariables()
Clear all declared global variables- Since:
- 9.1
-
setModuleURIResolver
public void setModuleURIResolver(ModuleURIResolver resolver)
Set a user-defined ModuleURIResolver for resolving URIs used in "import module" declarations in the XQuery prolog. This will be used for resolving URIs in XQuery "import module" declarations, overriding any ModuleURIResolver that was specified as part of the configuration.- Parameters:
resolver
- the ModuleURIResolver to be used
-
getModuleURIResolver
public ModuleURIResolver getModuleURIResolver()
Get the user-defined ModuleURIResolver for resolving URIs used in "import module" declarations in the XQuery prolog; returns null if none has been explicitly set either on the StaticQueryContext or on the Configuration.- Returns:
- the registered ModuleURIResolver
-
declareDefaultCollation
public void declareDefaultCollation(java.lang.String name)
Set the default collation.- Parameters:
name
- The collation name, as specified in the query prolog. Must be the name of a known registered collation.- Throws:
java.lang.NullPointerException
- if the supplied value is nulljava.lang.IllegalStateException
- if the supplied value is not a known collation URI registered with the configuration.- Since:
- 8.4. Changed in 9.7.0.15 so that it validates the collation name: see bug 3121.
-
getDefaultCollationName
public java.lang.String getDefaultCollationName()
Get the name of the default collation.- Returns:
- the name of the default collation; or the name of the codepoint collation if no default collation has been defined. The name is returned in the form it was specified; that is, it is not yet resolved against the base URI. (This is because the base URI declaration can follow the default collation declaration in the query prolog.) If no default collation has been specified, the "default default" (that is, the Unicode codepoint collation) is returned.
- Since:
- 8.4
-
setRequiredContextItemType
public void setRequiredContextItemType(ItemType type)
Declare the static type of the context item. If this type is declared, and if a context item is supplied when the query is invoked, then the context item must conform to this type (no type conversion will take place to force it into this type).- Parameters:
type
- the required type of the context item
-
getRequiredContextItemType
public ItemType getRequiredContextItemType()
Get the required type of the context item. If no type has been explicitly declared for the context item, an instance of AnyItemType (representing the type item()) is returned.- Returns:
- the required type of the context item
-
getNamePool
public NamePool getNamePool()
Get the NamePool used for compiling expressions- Returns:
- the name pool
- Since:
- 8.4
-
getSystemId
public java.lang.String getSystemId()
Get the system ID of the container of the expression. Used to construct error messages. Note that the systemID and the Base URI are currently identical, but they might be distinguished in the future.- Returns:
- the Base URI
- Since:
- 8.4
-
getBaseURI
public java.lang.String getBaseURI()
Get the Base URI of the query, for resolving any relative URI's used in the expression. Note that the systemID and the Base URI are currently identical, but they might be distinguished in the future. Used by the document() function.- Returns:
- the base URI of the query
- Since:
- 8.4
-
setPreserveBoundarySpace
public void setPreserveBoundarySpace(boolean preserve)
Set the policy for preserving boundary space- Parameters:
preserve
- true if boundary space is to be preserved, false if it is to be stripped- Since:
- 9.0
-
isPreserveBoundarySpace
public boolean isPreserveBoundarySpace()
Ask whether the policy for boundary space is "preserve" or "strip"- Returns:
- true if the policy is to preserve boundary space, false if it is to strip it
- Since:
- 9.0
-
setEmptyLeast
public void setEmptyLeast(boolean least)
Set the option for where an empty sequence appears in the collation order, if not otherwise specified in the "order by" clause- Parameters:
least
- true if the empty sequence is considered less than any other value (the default), false if it is considered greater than any other value- Since:
- 9.0
-
isEmptyLeast
public boolean isEmptyLeast()
Ask where an empty sequence should appear in the collation order, if not otherwise specified in the "order by" clause- Returns:
- true if the empty sequence is considered less than any other value (the default), false if it is considered greater than any other value
- Since:
- 9.0
-
setErrorListener
@Deprecated public void setErrorListener(javax.xml.transform.ErrorListener listener)
Deprecated.since 10.0: usesetErrorReporter(ErrorReporter)
Set the ErrorListener to be used to report compile-time errors in a query. This will also be the default for the run-time error listener used to report dynamic errors.- Parameters:
listener
- the ErrorListener to be used
-
getErrorListener
@Deprecated public javax.xml.transform.ErrorListener getErrorListener()
Deprecated.since 10.0: usegetErrorReporter()
Get the ErrorListener in use for this static context- Returns:
- the registered ErrorListener
-
setErrorReporter
public void setErrorReporter(ErrorReporter reporter)
Set an error reporter: that is, a used-supplied object that is to receive notification of static errors found in the stylesheet- Parameters:
reporter
- the object to be notified of static errors- Since:
- 10.0
-
getErrorReporter
public ErrorReporter getErrorReporter()
Get the error reporter: that is, a used-supplied object that is to receive notification of static errors found in the stylesheet- Returns:
- the object to be notified of static errors. This may be the error reporter
that was previously set using
setErrorReporter(ErrorReporter)
, or it may be a system-allocated error reporter. - Since:
- 10.0
-
setUpdatingEnabled
public void setUpdatingEnabled(boolean updating)
Say whether the query is allowed to be updating. XQuery update syntax will be rejected during query compilation unless this flag is set.- Parameters:
updating
- true if the query is allowed to use the XQuery Update facility (requires Saxon-EE). If set to false, the query must not be an updating query. If set to true, it may be either an updating or a non-updating query.- Since:
- 9.1
-
isUpdatingEnabled
public boolean isUpdatingEnabled()
Ask whether the query is allowed to be updating- Returns:
- true if the query is allowed to use the XQuery Update facility. Note that this does not necessarily mean that the query is an updating query; but if the value is false, the it must definitely be non-updating.
- Since:
- 9.1
-
-