# Package oracle.xml.xquery

Contains extensions to the XQuery API for Java (JSR 225) and `OXQDataSource`, the Oracle implementation of `XQDataSource`.

See: Description

Interface Summary
OXQAnnotation: Models an XQuery function annotation.
OXQCloseable: Extension methods for closeable objects.
OXQCompositeResolverFactory: The factory interface for creating composite entity resolvers.
OXQConnection: Extensions to `javax.xml.xquery.XQConnection`.
OXQDataFactory: Extensions to `javax.xml.xquery.XQDataFactory`.
OXQDecimalFormat: The implementation of this interface should store the decimal format properties that fn:format-number will use to format a number.
OXQDynamicContext: Extensions to `javax.xml.xquery.XQDynamicContext`.
OXQEntityLoader: Manages the lifecycle of schemas and modules in the static context.
OXQEntityResolverFactory: A factory for creating instances of `OXQEntityResolver`.
OXQExpression: Extensions to `javax.xml.xquery.XQExpression`.
OXQFileResolverFactory: The factory interface that creates resolvers for Java's 'file:' URIs.
OXQFunctionContext: The runtime context provided to extensions of `OXQFunctionEvaluator`.
OXQFunctionMetaData: Function metadata used when `resolving` an external function.
OXQHttpResolverFactory: The factory interface for creating entity resolvers for the HTTP protocol.
OXQItem: Extensions to `javax.xml.xquery.XQItem`.
OXQItemAccessor: Extensions to `javax.xml.xquery.XQItemAccessor`.
OXQJavaResolverFactory: The factory interface for creating entity resolvers for external functions implemented in Java.
OXQOptions: Exposes the contents of zero or more XQuery option declarations.
OXQPreparedExpression: Extensions to `javax.xml.xquery.XQPreparedExpression`.
OXQSequence: Extensions to `javax.xml.xquery.XQSequence`.
OXQSerializationParameters: Models the supported serialization parameters.
OXQStackTraceElement: Provides contextual information about query processing to an XQuery debugger client.
OXQStackTraceVariable: Provides information about a variable binding in addition to what is provided by `XQStackTraceVariable`.
OXQStaticContext: Extensions to `javax.xml.xquery.XQStaticContext`.
OXQView.OXQViewAccessor: Generic interface implemented by all XQJ objects which are capable of providing an OXQJ view.

Class Summary
OXQConstants: Constant values.
OXQDataSource: Implements `javax.xml.xquery.XQDataSource`.
OXQDebugListener: An event listener for implementing an XQuery debugger client.
OXQEntity: The entity returned by an `OXQEntityResolver`.
OXQEntityLocator: The location of an entity to be `resolved`.
OXQEntityResolver: Used by the XQuery processor to obtain different kinds of resource entities.
OXQEntityResolverRequestOptions: Additional options for use when `resolving an entity`.
OXQFunctionEvaluator: Extensions of this can be used to implement XQuery external functions.
OXQView: This class provides methods to access Oracle's XQJ extensions (OXQJ) and extensions to other classes returned by the XQJ implementation.

Enum Summary
OXQEntityKind: The kind of entity to be `resolved`.

## Package oracle.xml.xquery Description

Contains extensions to the XQuery API for Java (JSR 225) and `OXQDataSource`, the Oracle implementation of `XQDataSource`.

This is the documentation for Oracle's standalone XQuery 1.0 processor. It is implemented purely in Java and runs in the same JVM as the application. This processor supports the XQuery API for Java (XQJ) as well as some non-standard extensions. Specifically, this package contains:

- `OXQDataSource`, an implementation of `XQDataSource`, which is usually the starting point for XQJ users.
- Extensions to some of the standard XQJ interfaces in package `javax.xml.xquery` (for example, `OXQStaticContext`).
- An `entity resolver` framework which allows users to control how external entities are obtained by the query processor. This includes but is not limited to modules, schemas, collections, collations, documents, XML entities, and external functions.
- A `resource closing framework` which allows users to control how external resources are associated with XQJ objects and closed together with those XQJ objects.

### Thread-safety

The Oracle implementation of XQJ is not thread-safe. For example, an instance of `XQSequence` must be accessed by only one thread. However, a restricted form of thread safety is supported for managing instances of `XQConnection`.

- An instance of `XQConnection` serves as a factory for creating instances of `XQExpression`, `XQPreparedExpression`, `XQItem`, `XQSequence`, `XQItemType`, and `XQSequenceType`. One thread can manage the creation of these objects for use by other threads. For example, `XQPreparedExpression` instances created in one thread by the same connection can be used in other threads. Each `XQPreparedExpression` instance, however, must be executed by only one thread. Any user-defined implementations of `OXQEntityResolver` that are specified must be thread-safe when expressions from the same connection are evaluated concurrently.
- The `XQConnection.close()` method closes all `XQExpression` and `XQPreparedExpression` instances that were obtained from the connection. Closing those instances closes all `XQResultSequence` and `XQResultItem` instances obtained from the expressions. The `XQConnection.close()` method can be called while expressions obtained from the connection are being processed in other threads. In this case, all registered resources held by the expressions (such as `java.io.InputStream` and `java.io.Reader`) are closed. This contract assumes that all registered resources support a thread-safe close method. For example, many JDK implementations of `java.io.Closeable` satisfy this requirement. But, many implementations of `javax.xml.stream.XMLStreamReader` do not provide a thread-safe close method. Implementations without this support can give unpredictable results if they are closed while a second thread is still reading. See `OXQCloseable` for more information.

Since:
  12.1

Copyright © 2003, 2019, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms. Also see the documentation redistribution policy.
ORACLE CONFIDENTIAL
For authorized use only.
Do not distribute to third parties.