Package com.saxonica.ee.extfn

## Class CompileXPath

- java.lang.Object
- - net.sf.saxon.functions.AbstractFunction
  - - net.sf.saxon.functions.SystemFunction
    - - com.saxonica.ee.extfn.CompileXPath

- All Implemented Interfaces:
    `Callable`, `Function`, `GroundedValue`, `Item`, `Sequence`

      public class CompileXPath
      extends SystemFunction

  This class implements the saxon:compile-XPath() extension function, which is specially-recognized by the system because it needs access to parts of the static context.

  The compile-XPath() extension function compiles an XPath expression to a SEF representation. It was originally defined for Saxon-JS to allow free-standing compilation and execution of dynamic XPath expressions in the browser; this is a back-port to Saxon-Java so that the same code can be executed in either environment, which facilitates testing.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `CompileXPath()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `MapItem` | `call​(XPathContext context, Sequence[] arguments)` | Evaluate this function call at run-time
    `static Expression` | `make​(java.lang.String expression, StaticContext env, int start, int terminator, CodeInjector codeInjector, boolean inCatch)` | Upgraded from ExpressionTool.make() to permit 'in-catch' conversion of error variables to calls on saxon:dynamic-error-info()

    - ### Methods inherited from class net.sf.saxon.functions.SystemFunction

      `dependsOnContextItem, dynamicCall, equals, export, exportAdditionalArguments, exportAttributes, fixArguments, getArity, getCardinality, getCompilerName, getContextNode, getDescription, getDetails, getErrorCodeForTypeErrors, getFunctionItemType, getFunctionName, getIntegerBounds, getNetCost, getOperandRoles, getRequiredType, getResultItemType, getResultItemType, getRetainedStaticContext, getSpecialProperties, getStaticBaseUriString, getStreamerName, importAttributes, isTrustedResultType, makeCall, makeFunction, makeFunctionCall, makeOptimizedFunctionCall, resultIfEmpty, setArity, setDetails, setRetainedStaticContext, supplyTypeInformation, toShortString, toString, typeCheckCaller`

    - ### Methods inherited from class net.sf.saxon.functions.AbstractFunction

      `atomize, deepEquals, effectiveBooleanValue, getAnnotations, getStringValue, getStringValueCS, isArray, isMap, makeNewContext, simplify, typeCheck`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface net.sf.saxon.om.Function

      `getGenre`

    - ### Methods inherited from interface net.sf.saxon.om.GroundedValue

      `asIterable, concatenate, containsNode, materialize`

    - ### Methods inherited from interface net.sf.saxon.om.Item

      `getLength, head, isStreamed, itemAt, iterate, reduce, subsequence`

    - ### Methods inherited from interface net.sf.saxon.om.Sequence

      `makeRepeatable`

- - ### Constructor Detail

    - #### CompileXPath

          public CompileXPath()

  - ### Method Detail

    - #### call

          public MapItem call​(XPathContext context,
                              Sequence[] arguments)
                       throws XPathException

      Evaluate this function call at run-time
      Parameters:
        `context` - The XPath dynamic evaluation context
        `arguments` - The values of the arguments to the function call. Each argument value (which is in general a sequence) is supplied in the form of an iterator over the items in the sequence. If required, the supplied sequence can be materialized by calling, for example, `new SequenceExtent(arguments[i])`. If the argument is always a singleton, then the single item may be obtained by calling `arguments[i].next()`. The implementation is not obliged to read all the items in each `SequenceIterator` if they are not required to compute the result; but if any SequenceIterator is not read to completion, it is good practice to call its close() method.
      Returns:
        an iterator over the results of the function. If the result is a single item, it can be returned in the form of a `SingletonIterator`. If the result is an empty sequence, the method should return `EmptyIterator.getInstance()`
      Throws:
        `XPathException` - if a dynamic error occurs during evaluation of the function. The Saxon run-time code will add information about the error location.

    - #### make

          public static Expression make​(java.lang.String expression,
                                        StaticContext env,
                                        int start,
                                        int terminator,
                                        CodeInjector codeInjector,
                                        boolean inCatch)
                                 throws XPathException

      Upgraded from ExpressionTool.make() to permit 'in-catch' conversion of error variables to calls on saxon:dynamic-error-info()

      Parse an XPath expression. This performs the basic analysis of the expression against the grammar, it binds variable references and function calls to variable definitions and function definitions, and it performs context-independent expression rewriting for optimization purposes.

      Parameters:
        `expression` - The expression (as a character string)
        `env` - An object giving information about the compile-time context of the expression
        `start` - position of the first significant character in the expression
        `terminator` - The token that marks the end of this expression; typically Token.EOF, but may for example be a right curly brace
        `codeInjector` - true allows injection of tracing, debugging, or performance monitoring code; null if not required
        `inCatch` - The Xpath is considered to be in the context of an xsl:catch
      Returns:
        an object of type Expression
      Throws:
        `XPathException` - if the expression contains a static error