Class DocumentBuilder
Class DomDestination
Class DynamicContext
Class DynamicError
Class EmptyEnumerator
Class ExtensionFunctionCall
Class NullDestination
Class Processor
Class QName
Class SchemaManager
Class SchemaValidator
Class Serializer
Class StaticContext
Class StaticError
Class TextWriterDestination
Class XPathCompiler
Class XPathExecutable
Class XPathSelector
Class XQueryCompiler
Class XQueryEvaluator
Class XQueryExecutable
Class XdmAnyFunctionType
Class XdmAnyItemType
Class XdmAnyNodeType
Class XdmAtomicType
Class XdmAtomicValue
Class XdmDestination
Class XdmEmptySequence
Class XdmItem
Class XdmItemType
Class XdmNode
Class XdmNodeKind
Class XdmSequenceType
Class XdmValue
Class XmlDestination
Class XsltCompiler
Class XsltExecutable
Class XsltTransformer
Enum RecoveryPolicy
Enum SchemaValidationMode
Enum TreeModel
Enum WhitespacePolicy
Enum XdmAxis
Interface IMessageListener
Interface IQueryResolver
Interface IResultDocumentHandler
Interface IXdmEnumerator
Interface IXmlLocation
Interface SchemaResolver
public class XQueryCompiler
An 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 | |
---|---|
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. |
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 |
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. The default value is "1.0". This property must be set to "3.0" before compiling a query that uses XQuery 3.0 (formerly known as XQuery 1.1) syntax. |
bool |
SchemaAware
The |
IQueryResolver |
QueryResolver
A user-supplied |
IList |
ErrorList 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. |
net.sf.saxon.query.StaticQueryContext |
Implementation Escape hatch to the underying Java implementation |
Method Summary | |
---|---|
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) |
XQueryExecutable |
Compile(System.IO.Stream query) Compile a query supplied as a Stream. |
XQueryExecutable |
Compile(string query) Compile a query supplied as a String. |
Property Detail |
---|
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.
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.
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-SA. Non-updating queries are accepted regardless of the value of this property.
Property added in Saxon 9.1
public string XQueryLanguageVersion {get; set; }
This property indicates which version of XQuery language syntax is accepted. The default value is "1.0". This property must be set to "3.0" before compiling a query that uses XQuery 3.0 (formerly known as XQuery 1.1) syntax.
Support for XQuery 3.0 is currently limited: for details see the Saxon documentation. It cannot be used together with XQuery Updates. As well as enabling XQuery 3.0 via this API call, it must also be enabled by setting version="3.0" in the query prolog.
Property added in Saxon 9.2
public bool SchemaAware {get; set; }
The SchemaAware
property determines whether the query is schema-aware. By default, a query
is schema-aware if it contains one or more import schema
declarations. This option allows
a query to be marked as schema-aware even if it does not contain such a declaration.
If the query is not schema-aware, then schema-validated input documents will be rejected.
The reason for this option is that it is expensive to generate code that can handle typed input documents when they will never arise in practice.
The initial setting of this property is false, regardless of whether or not the Processor
is schema-aware. Setting this property to true if the processor is not schema-aware will cause an Exception.
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
.
public IList ErrorList {get; set; }
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.
public net.sf.saxon.query.StaticQueryContext Implementation {get; }
Escape hatch to the underying Java implementation
Method Detail |
---|
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
-
uri
-
public XQueryExecutable Compile(System.IO.Stream query)
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.
query
-
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.
public XQueryExecutable Compile(string query)
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
-
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.