com.icl.saxon.expr

Class NodeSetValue

Known Direct 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).

Field Summary

Fields inherited from class com.icl.saxon.expr.Value

ANY, BOOLEAN, NODESET, NUMBER, OBJECT, STRING

Fields inherited from class com.icl.saxon.expr.Expression

staticContext

Method Summary

boolean
asBoolean()
Evaluate as a boolean.
double
asNumber()
Evaluate as a number.
String
asString()
Convert to string value
boolean
compare(int operator, Value other)
Test how a nodeset compares to another Value under a relational comparison
int
conversionPreference(Class required)
Get conversion preference for this value to a Java class.
Object
convertToJava(Class target)
Convert to Java object (for passing to external functions)
void
display(int level)
Diagnostic print of expression structure
NodeEnumeration
enumerate()
Return an enumeration of this nodeset value.
NodeEnumeration
enumerate(Context c, boolean sorted)
Return an enumeration of this nodeset value.
boolean
equals(Value other)
Test whether a nodeset "equals" another Value
Value
evaluate(Context context)
Evaluate the Node Set.
NodeSetValue
evaluateAsNodeSet(Context context)
Evaluate an expression as a NodeSet.
int
getCount()
Count the nodes in the node-set.
int
getDataType()
Determine the data type of the expression
NodeInfo
getFirst()
Get the first node in the nodeset (in document order)
boolean
isSorted()
Test whether the value is known to be sorted
boolean
notEquals(Value other)
Test whether a nodeset "not-equals" another Value
void
setSorted(boolean isSorted)
Set a flag to indicate whether the nodes are sorted.
NodeSetValue
sort()
Sort the nodes into document order.

Methods inherited from class com.icl.saxon.expr.Value

asBoolean, asNumber, asString, compare, conversionPreference, convertToJava, equals, evaluate, getDependencies, inverse, notEquals, numericCompare, reduce, simplify, stringToNumber

Methods inherited from class com.icl.saxon.expr.Expression

containsReferences, display, enumerate, evaluate, evaluateAsBoolean, evaluateAsNodeSet, evaluateAsNumber, evaluateAsString, getDataType, getDependencies, getStaticContext, indent, isContextDocumentNodeSet, make, outputStringValue, reduce, setStaticContext, simplify, usesCurrent

Method Details

asBoolean

public boolean asBoolean()
            throws XPathException
Evaluate as a boolean.
Overrides:
asBoolean in interface Value

Returns:
true if the node set is not empty


asNumber

public double asNumber()
            throws XPathException
Evaluate as a number.
Overrides:
asNumber in interface Value

Returns:
the number obtained by evaluating as a String and converting the string to a number


asString

public String asString()
            throws XPathException
Convert to string value
Overrides:
asString in interface Value

Returns:
the value of the first node in the node-set if there is one, otherwise an empty string


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 interface Value

Parameters:
operator - The comparison operator, one of Tokenizer.LE, Tokenizer.LT, Tokenizer.GE, Tokenizer.GT,


conversionPreference

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


convertToJava

public Object convertToJava(Class target)
            throws XPathException
Convert to Java object (for passing to external functions)
Overrides:
convertToJava in interface Value


display

public void display(int level)
Diagnostic print of expression structure
Overrides:
display in interface Expression


enumerate

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


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 interface Expression

Parameters:
sorted - Indicates that the result must be in document order


equals

public boolean equals(Value other)
            throws XPathException
Test whether a nodeset "equals" another Value
Overrides:
equals in interface Value


evaluate

public Value evaluate(Context context)
            throws XPathException
Evaluate the Node Set. This guarantees to return the result in sorted order.
Overrides:
evaluate in interface Value

Parameters:
context - The context for evaluation (not used)


evaluateAsNodeSet

public NodeSetValue evaluateAsNodeSet(Context context)
            throws XPathException
Evaluate an expression as a NodeSet.
Overrides:
evaluateAsNodeSet in interface Expression

Parameters:
context - The context in which the expression is to be evaluated

Returns:
the value of the expression, evaluated in the current context


getCount

public 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.


getDataType

public int getDataType()
Determine the data type of the expression
Overrides:
getDataType in interface Expression

Returns:
Value.NODESET


getFirst

public NodeInfo getFirst()
            throws XPathException
Get the first node in the nodeset (in document order)

Returns:
the first node


isSorted

public 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.


notEquals

public boolean notEquals(Value other)
            throws XPathException
Test whether a nodeset "not-equals" another Value
Overrides:
notEquals in interface Value


setSorted

public 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


sort

public 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:

Returns:
the same NodeSetValue, after sorting. (The reason for returning this is that it makes life easier for the XSL compiler).