Class NodeSetValue

Direct Known Subclasses:
EmptyNodeSet, NodeSetExtent, NodeSetIntent, SingletonNodeSet

public abstract class NodeSetValue extends Value
A node-set value. We use this both for node-sets and node-lists. The node set will only be sorted into document order when requested (using sort() or evaluate()). This is an abstract class with a number of concrete implementations including NodeSetExtent (for extensional node-sets) and NodeSetIntent (for intensional node-sets).
  • Constructor Details

    • NodeSetValue

      public NodeSetValue()
  • Method Details

    • getDataType

      public int getDataType()
      Determine the data type of the expression
      Specified by:
      getDataType in class Expression
      Returns:
      Value.NODESET
    • evaluate

      public Value evaluate(Context context) throws XPathException
      Evaluate the Node Set. This guarantees to return the result in sorted order.
      Overrides:
      evaluate in class Value
      Parameters:
      context - The context for evaluation (not used)
      Returns:
      the value, unchanged
      Throws:
      XPathException
    • evaluateAsNodeSet

      public NodeSetValue evaluateAsNodeSet(Context context) throws XPathException
      Evaluate an expression as a NodeSet.
      Overrides:
      evaluateAsNodeSet in class 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 - when the expression does not return a nodeset.
    • enumerate

      public abstract NodeEnumeration enumerate() throws XPathException
      Return an enumeration of this nodeset value. Unless sort() has been called the nodes can be in any order.
      Throws:
      XPathException
    • enumerate

      public NodeEnumeration enumerate(Context c, boolean sorted) throws XPathException
      Return an enumeration of this nodeset value. This is to satisfy the interface for Expression.
      Overrides:
      enumerate in class Expression
      Parameters:
      c - The context in which the expression is to be evaluated
      sorted - Indicates that the result must be in document order
      context - The context is ignored.
      Throws:
      XPathException - when the expression does not return a nodeset.
    • setSorted

      public abstract void setSorted(boolean isSorted)
      Set a flag to indicate whether the nodes are sorted. Used when the creator of the node-set knows that they are already in document order.
      Parameters:
      isSorted - true if the caller wishes to assert that the nodes are in document order and do not need to be further sorted
    • isSorted

      public abstract boolean isSorted() throws XPathException
      Test whether the value is known to be sorted
      Returns:
      true if the value is known to be sorted in document order, false if it is not known whether it is sorted.
      Throws:
      XPathException
    • asString

      public abstract String asString() throws XPathException
      Convert to string value
      Specified by:
      asString in class Value
      Returns:
      the value of the first node in the node-set if there is one, otherwise an empty string
      Throws:
      XPathException
    • asNumber

      public double asNumber() throws XPathException
      Evaluate as a number.
      Specified by:
      asNumber in class Value
      Returns:
      the number obtained by evaluating as a String and converting the string to a number
      Throws:
      XPathException
    • asBoolean

      public abstract boolean asBoolean() throws XPathException
      Evaluate as a boolean.
      Specified by:
      asBoolean in class Value
      Returns:
      true if the node set is not empty
      Throws:
      XPathException
    • getCount

      public abstract int getCount() throws XPathException
      Count the nodes in the node-set. Note this will sort the node set if necessary, to make sure there are no duplicates.
      Throws:
      XPathException
    • sort

      public abstract NodeSetValue sort() throws XPathException
      Sort the nodes into document order. This does nothing if the nodes are already known to be sorted; to force a sort, call setSorted(false)
      Parameters:
      controller - The controller used to sort nodes into document order
      Returns:
      the same NodeSetValue, after sorting. (The reason for returning this is that it makes life easier for the XSL compiler).
      Throws:
      XPathException
    • getFirst

      public abstract NodeInfo getFirst() throws XPathException
      Get the first node in the nodeset (in document order)
      Returns:
      the first node
      Throws:
      XPathException
    • equals

      public boolean equals(Value other) throws XPathException
      Test whether a nodeset "equals" another Value
      Overrides:
      equals in class Value
      Returns:
      a boolean giving the value of the expression, evaluated in the current context
      Throws:
      XPathException
    • notEquals

      public boolean notEquals(Value other) throws XPathException
      Test whether a nodeset "not-equals" another Value
      Overrides:
      notEquals in class Value
      Returns:
      a boolean giving the value of the expression, evaluated in the current context
      Throws:
      XPathException
    • compare

      public boolean compare(int operator, Value other) throws XPathException
      Test how a nodeset compares to another Value under a relational comparison
      Overrides:
      compare in class Value
      Parameters:
      operator - The comparison operator, one of Tokenizer.LE, Tokenizer.LT, Tokenizer.GE, Tokenizer.GT,
      Throws:
      XPathException
    • display

      public void display(int level)
      Diagnostic print of expression structure
      Specified by:
      display in class Expression
    • conversionPreference

      public int conversionPreference(Class required)
      Get conversion preference for this value to a Java class. A low result indicates higher preference.
      Specified by:
      conversionPreference in class Value
    • convertToJava

      public Object convertToJava(Class target) throws XPathException
      Convert to Java object (for passing to external functions)
      Specified by:
      convertToJava in class Value
      Parameters:
      target - The class required by the external function
      Returns:
      an object of the target class
      Throws:
      XPathException