### Saxon.Api

- BinaryResource
- CatalogCollection
- DirectoryCollection
- DocumentBuilder
- DomDestination
- DynamicContext
- DynamicError
- EmptyEnumerator<T>
- ErrorReporter
- ErrorReporterToStaticError
- ErrorReporterWrapper
- ExtensionFunction
- ExtensionFunctionCall
- ExtensionFunctionDefinition
- Feature<T>
- FeatureKeys
- HostLanguage
- ICollectionFinder
- IErrorReporter
- IInvalidityHandler
- IMessageListener
- IMessageListener2
- InvalidityHandlerWrapper
- IPredicate<in XdmItem>
- IQueryResolver
- IResource
- IResourceCollection
- IResourceFactory
- IResultDocumentHandler
- IXmlLocation
- JarCollection
- NamespaceConstant
- NullDestination
- Predicate<T>
- Predicates
- Processor
- QName
- RawDestination
- RecoveryPolicy
- Resource
- ResourceCollection
- SchemaManager
- SchemaResolver
- SchemaValidationMode
- SchemaValidator
- Serializer
- StandardCollectionFinder
- StandardLogger
- StaticContext
- StaticError
- Step<TInput, TResult>
- Steps
- TextWriterDestination
- TreeModel
- URIQueryParameters
- ValidationFailure
- WhitespacePolicy
- XdmAnyArrayType
- XdmAnyFunctionType
- XdmAnyItemType
- XdmAnyMapType
- XdmAnyNodeType
- XdmArray
- XdmAtomicType
- XdmAtomicValue
- XdmAxis
- XdmDestination
  - - TreeProtector
- XdmEmptySequence
- XdmExternalObjectValue
- XdmFunctionItem
- XdmItem
- XdmItemType
- XdmMap
- XdmNode
- XdmNodeKind
- XdmSequenceType
- XdmValue
- XmlDestination
- XmlProcessingError
- XmlResource
- XPathCompiler
- XPathExecutable
- XPathSelector
- XQueryCompiler
- XQueryEvaluator
- XQueryExecutable
- Xslt30Transformer
- XsltCompiler
- XsltExecutable
  - - ParameterDetails
- XsltPackage
- XsltTransformer

### Saxon.Api

# Class XQueryCompiler

public class XQueryCompiler

The `XQueryCompiler` object allows XQuery queries to be compiled.

To construct an `XQueryCompiler`, use the factory method `NewXQueryCompiler` on the Processor object.

The `XQueryCompiler` holds information that represents the static context for the queries that it compiles. This information remains intact after performing a compilation. An `XQueryCompiler` may therefore be used repeatedly to compile multiple queries. Any changes made to the `XQueryCompiler` (that is, to the static context) do not affect queries that have already been compiled.

An `XQueryCompiler` may be used concurrently in multiple threads, but it should not then be modified once initialized.

### Property Summary
string | BaseUri The base URI of the query, which forms part of the static context of the query. This is used for resolving any relative URIs appearing within the query, for example in references to library modules, schema locations, or as an argument to the `doc()` function.
XdmItemType | ContextItemType The required context item type for the expression. This is used for optimizing the expression at compile time, and to check at run-time that the value supplied for the context item is the correct type.
IList<StaticError> | ErrorList Deprecated IList<StaticError> ErrorList is deprecated, please use the methods SetErrorList and GetErrorList which hanldes IList<XmlProcessingError>.
IErrorReporter | ErrorReporter Set the `ErrorReporter` to be used when validating instance documents as a user defined IErrorReporter. Requirements here is IErrorReport implementation with a user-written `report()` method, it is possible to intercept error conditions as they occur. If this property is used then the ErrorList property and SetErrorList method is overriden.
bool | FastCompliation Request fast compilation. Fast compilation will generally be achieved at the expense of run-time performance and quality of diagnostics. Fast compilation is a good trade-off if (a) the expression is known to be correct, and (b) once compiled, the expression is only executed once against a document of modest size.
net.sf.saxon.s9api.XQueryCompiler | Implementation Escape hatch to the underlying Java implementation
Processor | Processor Get the `Processor` from which this `XQueryCompiler` was constructed
IQueryResolver | QueryResolver A user-supplied `IQueryResolver` used to resolve location hints appearing in an `import module` declaration.
bool | SchemaAware Say that the query must be compiled to be schema-aware, even if it contains no "import schema" declarations. Normally a query is treated as schema-aware only if it contains one or more "import schema" declarations.
bool | UpdatingEnabled This property indicates whether XQuery Update syntax is accepted. The default value is false. This property must be set to true before compiling a query that uses update syntax.
string | XQueryLanguageVersion This property indicates which version of XQuery language syntax is accepted. In this version of Saxon the version is always "3.1"; any attempt to set a different value is ignored.

### Method Summary
XQueryExecutable | Compile(Stream query) Compile a query supplied as a `Stream`.
XQueryExecutable | Compile(string query) Compile a query supplied as a `String`.
void | DeclareCollation(Uri uri, CompareInfo compareInfo, CompareOptions options, bool isDefault) Create a collation based on a given `CompareInfo` and `CompareOptions`
void | DeclareNamespace(string prefix, string uri) Declare a namespace for use by the query. This has the same status as a namespace appearing within the query prolog (though a declaration in the query prolog of the same prefix will take precedence).
IList<XmlProcessingError> | GetErrorList() Get list of errors as `IList<XmlProcessingError>`
void | SetErrorList(IList<XmlProcessingError> value) List of errors. The caller may supply an empty list before calling `Compile`; the processor will then populate the list with error information obtained during the query compilation. Each error will be included as an object of type `XmlProcessingError`. If no error list is supplied by the caller, error information will be written to the standard error stream.

## Property Detail

### BaseUri

public string BaseUri {get; set; }

The base URI of the query, which forms part of the static context of the query. This is used for resolving any relative URIs appearing within the query, for example in references to library modules, schema locations, or as an argument to the `doc()` function.

### ContextItemType

public XdmItemType ContextItemType {get; set; }

The required context item type for the expression. This is used for optimizing the expression at compile time, and to check at run-time that the value supplied for the context item is the correct type.

### ErrorList

public IList<StaticError> ErrorList {get; set; }

Deprecated IList<StaticError> ErrorList is deprecated, please use the methods SetErrorList and GetErrorList which hanldes IList<XmlProcessingError>.

List of errors. The caller should supply an empty list before calling `Compile()`; the processor will then populate the list with error information obtained during the compilation. Each error will be included as an object of type `StaticError`. If no error list is supplied by the caller, error information will be written to the standard error stream.

By supplying a custom `List` with a user-written `add()` method, it is possible to intercept error conditions as they occur.

### ErrorReporter

public IErrorReporter ErrorReporter {set; }

Set the `ErrorReporter` to be used when validating instance documents as a user defined IErrorReporter. Requirements here is IErrorReport implementation with a user-written `report()` method, it is possible to intercept error conditions as they occur. If this property is used then the ErrorList property and SetErrorList method is overriden.

The `IErrorReporter` to be used

### FastCompliation

public bool FastCompliation {get; set; }

Request fast compilation. Fast compilation will generally be achieved at the expense of run-time performance and quality of diagnostics. Fast compilation is a good trade-off if (a) the expression is known to be correct, and (b) once compiled, the expression is only executed once against a document of modest size.

The current implementation is equivalent to switching off all optimizations. Setting this option, however, indicates an intent rather than a mechanism, and the implementation details may change in future to reflect the intent.

Set to true to request fast compilation; set to false to revert to the optimization options defined in the Configuration.

### Implementation

public net.sf.saxon.s9api.XQueryCompiler Implementation {get; }

Escape hatch to the underlying Java implementation

### Processor

public Processor Processor {get; }

Get the `Processor` from which this `XQueryCompiler` was constructed

### QueryResolver

public IQueryResolver QueryResolver {get; set; }

A user-supplied `IQueryResolver` used to resolve location hints appearing in an `import module` declaration.

In the absence of a user-supplied `QueryResolver`, an `import module` declaration is interpreted as follows. First, if the module URI identifies an already loaded module, that module is used and the location hints are ignored. Otherwise, each URI listed in the location hints is resolved using the `XmlResolver` registered with the `Processor`.

### SchemaAware

public bool SchemaAware {get; set; }

Say that the query must be compiled to be schema-aware, even if it contains no "import schema" declarations. Normally a query is treated as schema-aware only if it contains one or more "import schema" declarations.

If the query is not schema-aware, then all input documents must be untyped (or `xs:anyType`), and validation of temporary nodes is disallowed (though validation of the final result tree is permitted). Setting the argument to true means that schema-aware code will be compiled regardless.

### UpdatingEnabled

public bool UpdatingEnabled {get; set; }

This property indicates whether XQuery Update syntax is accepted. The default value is false. This property must be set to true before compiling a query that uses update syntax.

This propery must be set to true before any query can be compiled that uses updating syntax. This applies even if the query is not actually an updating query (for example, a copy-modify expression). XQuery Update syntax is accepted only by Saxon-EE. Non-updating queries are accepted regardless of the value of this property.

### XQueryLanguageVersion

public string XQueryLanguageVersion {get; set; }

This property indicates which version of XQuery language syntax is accepted. In this version of Saxon the version is always "3.1"; any attempt to set a different value is ignored.

## Method Detail

### Compile

public XQueryExecutable Compile(Stream query)
throws
StaticError

Compile a query supplied as a `Stream`.

The XQuery processor attempts to deduce the encoding of the query by looking for a byte-order-mark, or if none is present, by looking for the encoding declaration in the XQuery version declaration. For this to work, the stream must have the `CanSeek` property. If no encoding information is present, UTF-8 is assumed.

The base URI of the query is set to the value of the `BaseUri` property. If this has not been set, then the base URI will be undefined, which means that any use of an expression that depends on the base URI will cause an error.

Parameters:

`query` - A stream containing the source text of the query

Returns:

An `XQueryExecutable` which represents the compiled query object. The `XQueryExecutable` may be run as many times as required, in the same or a different thread. The `XQueryExecutable` is not affected by any changes made to the `XQueryCompiler` once it has been compiled.

Throws:

StaticError - Throws a `StaticError` if errors were detected during static analysis of the query. Details of the errors will be added as `StaticError` objects to the `ErrorList` if supplied; otherwise they will be written to the standard error stream. The exception that is returned is merely a summary indicating the status.

### Compile

public XQueryExecutable Compile(string query)
throws
StaticError

Compile a query supplied as a `String`.

Using this method the query processor is provided with a string of Unicode characters, so no decoding is necessary. Any encoding information present in the version declaration is therefore ignored.

Parameters:

`query` - A string containing the source text of the query

Returns:

An `XQueryExecutable` which represents the compiled query object. The `XQueryExecutable` may be run as many times as required, in the same or a different thread. The `XQueryExecutable` is not affected by any changes made to the `XQueryCompiler` once it has been compiled.

Throws:

StaticError - Throws a `StaticError` if errors were detected during static analysis of the query. Details of the errors will be added as `StaticError` objects to the `ErrorList` if supplied; otherwise they will be written to the standard error stream. The exception that is returned is merely a summary indicating the status.

### DeclareCollation

public void DeclareCollation(Uri uri,
CompareInfo compareInfo,
CompareOptions options,
bool isDefault)

Create a collation based on a given `CompareInfo` and `CompareOptions`

In the current and recent releases of Saxon, collations are always defined at the level of a `Configuration`. Declaring a collation here may therefore have wider effects than intended. It is recommended not to use this method, but to use Processor.DeclareCollation(Uri,CompareInfo,CompareOptions) instead.

Parameters:

`uri` - The collation URI to be used within the XPath expression to refer to this collation
`compareInfo` - The `CompareInfo`, which determines the language-specific collation rules to be used
`options` - Options to be used in performing comparisons, for example whether they are to be case-blind and/or accent-blind
`isDefault` - If true, this collation will be used as the default collation

### DeclareNamespace

public void DeclareNamespace(string prefix,
string uri)

Declare a namespace for use by the query. This has the same status as a namespace appearing within the query prolog (though a declaration in the query prolog of the same prefix will take precedence).

Parameters:

`prefix` - The namespace prefix to be declared. Use a zero-length string to declare the default namespace (that is, the default namespace for elements and types).
`uri` - The namespace URI. It is possible to specify a zero-length string to "undeclare" a namespace.

### GetErrorList

public IList<XmlProcessingError> GetErrorList()

Get list of errors as `IList<XmlProcessingError>`

### SetErrorList

public void SetErrorList(IList<XmlProcessingError> value)

List of errors. The caller may supply an empty list before calling `Compile`; the processor will then populate the list with error information obtained during the query compilation. Each error will be included as an object of type `XmlProcessingError`. If no error list is supplied by the caller, error information will be written to the standard error stream.

By supplying a custom `List` with a user-written `add()` method, it is possible to intercept error conditions as they occur.

Note that this error list is used only for errors detected during the compilation of the stylesheet. It is not used for errors detected when executing the stylesheet.

Parameters:

`value` - Supplied list.