Class Expression

java.lang.Object
com.icl.saxon.expr.Expression
Direct Known Subclasses:
AttributeValueTemplate, BinaryExpression, ErrorExpression, Function, IsLastExpression, NodeSetComparison, NodeSetExpression, PositionRange, SingletonComparison, Value, VariableReference

public abstract class Expression extends Object
This class serves two purposes: it is an abstract superclass for different kinds of XPath expression, and it contains a static method to invoke the expression parser
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected StaticContext
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Determine whether the expression contains any references to variables
    abstract void
    display(int level)
    Diagnostic print of expression structure
    enumerate(Context context, boolean sorted)
    Return an enumeration of nodes in a nodeset.
    abstract Value
    evaluate(Context context)
    Evaluate an expression.
    boolean
    Evaluate an expression as a Boolean.
    The result of x.evaluateAsBoolean(c) must be equivalent to x.evaluate(c).asBoolean(); but optimisations are possible when it is known that a boolean result is required, especially in the case of a NodeSet.
    Evaluate an expression as a NodeSet.
    double
    Evaluate an expression as a Number.
    The result of x.evaluateAsNumber(c) must be equivalent to x.evaluate(c).asNumber(); but optimisations are possible when it is known that a numeric result is required, especially in the case of a NodeSet.
    Evaluate an expression as a String.
    The result of x.evaluateAsString(c) must be equivalent to x.evaluate(c).asString(); but optimisations are possible when it is known that a string result is required, especially in the case of a NodeSet.
    abstract int
    Determine the data type of the expression, if possible
    abstract int
    Determine which aspects of the context the expression depends on.
    Determine the static context used when the expression was parsed
    protected static String
    indent(int level)
    Construct indent string, for diagnostic output
    boolean
    Determine, in the case of an expression whose data type is Value.NODESET, whether all the nodes in the node-set are guaranteed to come from the same document as the context node.
    static Expression
    make(String expression, StaticContext env)
    Parse an expression
    void
    Evaluate an expression as a String and write the result to the specified outputter.
    abstract Expression
    reduce(int dependencies, Context context)
    Perform a partial evaluation of the expression, by eliminating specified dependencies on the context.
    final void
    Set the static context used when the expression was parsed
    Simplify an expression.
    boolean
    Determine whether the expression uses the current() function.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • Expression

      public Expression()
  • Method Details

    • make

      public static Expression make(String expression, StaticContext env) throws XPathException
      Parse an expression
      Parameters:
      expression - The expression (as a character string)
      env - An object giving information about the compile-time context of the expression
      Returns:
      an object of type Expression
      Throws:
      XPathException
    • simplify

      public Expression simplify() throws XPathException
      Simplify an expression. Default implementation does nothing.
      Returns:
      the simplified expression
      Throws:
      XPathException
    • setStaticContext

      public final void setStaticContext(StaticContext sc)
      Set the static context used when the expression was parsed
    • getStaticContext

      public final StaticContext getStaticContext()
      Determine the static context used when the expression was parsed
    • containsReferences

      public boolean containsReferences() throws XPathException
      Determine whether the expression contains any references to variables
      Returns:
      true if so
      Throws:
      XPathException
    • evaluate

      public abstract Value evaluate(Context context) throws XPathException
      Evaluate an expression.
      Parameters:
      context - The context in which the expression is to be evaluated
      Returns:
      the value of the expression, evaluated in the current context
      Throws:
      XPathException
    • evaluateAsBoolean

      public boolean evaluateAsBoolean(Context context) throws XPathException
      Evaluate an expression as a Boolean.
      The result of x.evaluateAsBoolean(c) must be equivalent to x.evaluate(c).asBoolean(); but optimisations are possible when it is known that a boolean result is required, especially in the case of a NodeSet.
      Parameters:
      context - The context in which the expression is to be evaluated
      Returns:
      the value of the expression, evaluated in the current context
      Throws:
      XPathException
    • evaluateAsNumber

      public double evaluateAsNumber(Context context) throws XPathException
      Evaluate an expression as a Number.
      The result of x.evaluateAsNumber(c) must be equivalent to x.evaluate(c).asNumber(); but optimisations are possible when it is known that a numeric result is required, especially in the case of a NodeSet.
      Parameters:
      context - The context in which the expression is to be evaluated
      Returns:
      the value of the expression, evaluated in the current context
      Throws:
      XPathException
    • evaluateAsString

      public String evaluateAsString(Context context) throws XPathException
      Evaluate an expression as a String.
      The result of x.evaluateAsString(c) must be equivalent to x.evaluate(c).asString(); but optimisations are possible when it is known that a string result is required, especially in the case of a NodeSet.
      Parameters:
      context - The context in which the expression is to be evaluated
      Returns:
      the value of the expression, evaluated in the current context
      Throws:
      XPathException
    • outputStringValue

      public void outputStringValue(Outputter out, Context context) throws TransformerException
      Evaluate an expression as a String and write the result to the specified outputter.
      Parameters:
      out - The required outputter
      context - The context in which the expression is to be evaluated
      Throws:
      TransformerException
    • evaluateAsNodeSet

      public NodeSetValue evaluateAsNodeSet(Context context) throws XPathException
      Evaluate an expression as a NodeSet.
      Parameters:
      context - The context in which the expression is to be evaluated
      Returns:
      the value of the expression, evaluated in the current context. Note that the result is not necessarily in document order; to get it into document order, call sort() on the result.
      Throws:
      XPathException - when the expression does not return a nodeset.
    • enumerate

      public NodeEnumeration enumerate(Context context, boolean sorted) throws XPathException
      Return an enumeration of nodes in a nodeset.
      Parameters:
      context - The context in which the expression is to be evaluated
      sorted - Indicates whether the nodes are required in document order. If this is false, they may come in any order, but there will be no duplicates.
      Throws:
      XPathException - when the expression does not return a nodeset.
    • getDataType

      public abstract int getDataType()
      Determine the data type of the expression, if possible
      Returns:
      one of the values Value.STRING, Value.BOOLEAN, Value.NUMBER, Value.NODESET, Value.FRAGMENT, or Value.ANY (meaning not known in advance)
    • isContextDocumentNodeSet

      public boolean isContextDocumentNodeSet()
      Determine, in the case of an expression whose data type is Value.NODESET, whether all the nodes in the node-set are guaranteed to come from the same document as the context node. Used for optimization.
    • usesCurrent

      public boolean usesCurrent()
      Determine whether the expression uses the current() function. This is an error if the expression is within a pattern
    • getDependencies

      public abstract int getDependencies()
      Determine which aspects of the context the expression depends on. The result is a bitwise-or'ed value composed from constants such as Context.VARIABLES and Context.CURRENT_NODE
    • reduce

      public abstract Expression reduce(int dependencies, Context context) throws XPathException
      Perform a partial evaluation of the expression, by eliminating specified dependencies on the context.
      Parameters:
      dependencies - The dependencies to be removed, e.g. Context.VARIABLES
      context - The context to be used for the partial evaluation
      Returns:
      a new expression (or Value) that does not have any of the specified dependencies
      Throws:
      XPathException
    • display

      public abstract void display(int level)
      Diagnostic print of expression structure
    • indent

      protected static String indent(int level)
      Construct indent string, for diagnostic output