Class SaxonXQDynamicContext

java.lang.Object
com.saxonica.xqj.Closable
com.saxonica.xqj.SaxonXQDynamicContext
All Implemented Interfaces:
XQDynamicContext
Direct Known Subclasses:
SaxonXQExpression, SaxonXQPreparedExpression

public abstract class SaxonXQDynamicContext extends Closable implements XQDynamicContext
Saxon implementation of the XQJ DynamicContext interface
  • Field Details

  • Constructor Details

    • SaxonXQDynamicContext

      public SaxonXQDynamicContext()
  • Method Details

    • getDynamicContext

      protected abstract DynamicQueryContext getDynamicContext()
    • getConfiguration

      protected final Configuration getConfiguration()
    • getDataFactory

      protected abstract SaxonXQDataFactory getDataFactory() throws XQException
      Throws:
      XQException
    • externalVariableExists

      protected abstract boolean externalVariableExists(QName name)
    • bindAtomicValue

      public void bindAtomicValue(QName varname, String value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the casting from xs:string rules outlined in 17.1.1 Casting from xs:string and xs:untypedAtomic, XQuery 1.0 and XPath 2.0 Functions and Operators. If the cast fails, or if there is a mismatch between the static and dynamic types, an XQException is thrown either by this method or during query evaluation.
      Specified by:
      bindAtomicValue in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to
      value - the lexical string value of the type
      type - the item type of the bind
      Throws:
      XQException - if (1) any of the arguments are null, (2) given type is not an atomic type, (3) the conversion of the value to an XDM instance failed, (4) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (5) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (6) the expression is in a closed state
    • bindBoolean

      public void bindBoolean(QName varname, boolean value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
      Specified by:
      bindBoolean in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted
      type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
      Throws:
      XQException - if (1) the varName argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindByte

      public void bindByte(QName varname, byte value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
      Specified by:
      bindByte in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted
      type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
      Throws:
      XQException - if (1) the varName argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindDocument

      public void bindDocument(QName varname, InputStream value, String baseURI, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item.

      If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.

      The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.

      If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation. If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.

      Specified by:
      bindDocument in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted, cannot be null
      baseURI - an optional base URI, can be null. It can be used, for example, to resolve relative URIs and to include in error messages.
      type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
      Throws:
      XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindDocument

      public void bindDocument(QName varname, Reader value, String baseURI, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item.

      If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.

      The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.

      If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation. If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.

      Specified by:
      bindDocument in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted, cannot be null
      baseURI - an optional base URI, can be null. It can be used, for example, to resolve relative URIs and to include in error messages.
      type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
      Throws:
      XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindDocument

      public void bindDocument(QName varname, Source value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item from the given Source. An XQJ implementation must at least support the following implementations:
      • javax.xml.transform.dom.DOMSource
      • javax.xml.transform.sax.SAXSource
      • javax.xml.transform.stream.StreamSource

      If the value represents a well-formed XML document, it will result in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.

      The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.

      If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.

      Specified by:
      bindDocument in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted, cannot be null
      type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
      Throws:
      XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindDocument

      public void bindDocument(QName varname, String value, String baseURI, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item.

      If the value represents a well-formed XML document, it will be parsed and results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT, or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.

      The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.

      If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation. If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception.

      Specified by:
      bindDocument in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted, cannot be null
      baseURI - an optional base URI, can be null. It can be used, for example, to resolve relative URIs and to include in error messages.
      type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
      Throws:
      XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindDocument

      public void bindDocument(QName varname, XMLStreamReader value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item.

      If the value represents a well-formed XML document, it results in a document node. The kind of the input type must be null, XQITEMKIND_DOCUMENT_ELEMENT or XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT.

      The value is converted into an instance of the specified type according to the rules defined in 14.3 Mapping a Java XML document to an XQuery document node, XQuery API for Java (XQJ) 1.0.

      If the value is not well formed, or if a kind of the input type other than the values list above is specified, behavior is implementation defined and may raise an exception. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.

      Specified by:
      bindDocument in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted, cannot be null
      type - the type of the value for the created document node. If null is specified, it behaves as if XQDataFactory.createDocumentElementType( XQDataFactory.createElementType(null, XQItemType.XQBASETYPE_XS_UNTYPED)) were passed in as the type parameter. That is, the type represents the XQuery sequence type document-node(element(*, xs:untyped))
      Throws:
      XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindDouble

      public void bindDouble(QName varname, double value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluations.
      Specified by:
      bindDouble in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted
      type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
      Throws:
      XQException - if (1) the varName argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindFloat

      public void bindFloat(QName varname, float value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluations.
      Specified by:
      bindFloat in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted
      type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
      Throws:
      XQException - if (1) the varName argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindInt

      public void bindInt(QName varname, int value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluations.
      Specified by:
      bindInt in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted
      type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
      Throws:
      XQException - if (1) the varName argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindItem

      public void bindItem(QName varname, XQItem value) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable. The dynamic type of the value is derived from the XQItem. In case of a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
      Specified by:
      bindItem in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be bound, cannot be null
      Throws:
      XQException - if (1) any of the arguments are null, (2) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (3) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, (4) the expression is in a closed state, or (5) the specified item is closed
    • bindLong

      public void bindLong(QName varname, long value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
      Specified by:
      bindLong in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted
      type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
      Throws:
      XQException - if (1) the varName argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindNode

      public void bindNode(QName varname, Node value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
      Specified by:
      bindNode in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted, cannot be null
      type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
      Throws:
      XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindObject

      public void bindObject(QName varname, Object value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
      Specified by:
      bindObject in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted, cannot be null
      type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
      Throws:
      XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindSequence

      public void bindSequence(QName varname, XQSequence value) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The input sequence is consumed from its current position to the end, after which the input sequence's position will be set to point after the last item. The dynamic type of the value is derived from the items in the sequence. In case of a mismatch between the static and dynamic types, an XQException is be raised either by this method, or during query evaluation.
      Specified by:
      bindSequence in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be bound, cannot be null
      Throws:
      XQException - if (1) any of the arguments are null, (2) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (3) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, (4) the expression is in a closed state, or (5) the specified sequence is closed
    • bindShort

      public void bindShort(QName varname, short value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.
      Specified by:
      bindShort in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted
      type - the type of the value to be bound to the external variable. The default type of the value is used in case null is specified
      Throws:
      XQException - if (1) the varName argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • bindString

      public void bindString(QName varname, String value, XQItemType type) throws XQException
      Description copied from interface: XQDynamicContext
      Binds a value to the given external variable or the context item. The value is converted into an instance of the specified type, which must represent an xs:string or a type derived by restriction from xs:string. If the specified type is null, it defaults to xs:string.

      Subsequently the value is converted into an instance of the specified type according to the rule defined in 14.2 Mapping a Java Data Type to an XQuery Data Type, XQuery API for Java (XQJ) 1.0,. If the conversion fails, or if there is a mismatch between the static and dynamic types, an XQException is raised either by this method, or during query evaluation.

      Specified by:
      bindString in interface XQDynamicContext
      Parameters:
      varname - the name of the external variable to bind to, cannot be null
      value - the value to be converted, cannot be null
      type - the type of the value to be bound to the external variable. The default type, xs:string, is used in case null is specified
      Throws:
      XQException - if (1) the varName or value argument is null, (2) the conversion of the value to an XDM instance failed, (3) in case of an XQPreparedExpression, the dynamic type of the bound value is not compatible with the static type of the variable, (4) in case of an XQPreparedExpression, the variable is not defined in the prolog of the expression, or (5) if the expression is in a closed state
    • getImplicitTimeZone

      public TimeZone getImplicitTimeZone() throws XQException
      Description copied from interface: XQDynamicContext
      Gets the implicit timezone
      Specified by:
      getImplicitTimeZone in interface XQDynamicContext
      Returns:
      the implicit timezone. This may have been set by an application using the setImplicitTimeZone method or provided by the implementation
      Throws:
      XQException - if the expression is in a closed state
    • setImplicitTimeZone

      public void setImplicitTimeZone(TimeZone implicitTimeZone) throws XQException
      Description copied from interface: XQDynamicContext
      Sets the implicit timezone
      Specified by:
      setImplicitTimeZone in interface XQDynamicContext
      Parameters:
      implicitTimeZone - time zone to be set
      Throws:
      XQException - if the expression is in a closed state