com.icl.saxon.expr

Class NodeSetValue

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).
Method Summary
abstract booleanasBoolean()
Evaluate as a boolean.
doubleasNumber()
Evaluate as a number.
abstract StringasString()
Convert to string value
booleancompare(int operator, Value other)
Test how a nodeset compares to another Value under a relational comparison
intconversionPreference(Class required)
Get conversion preference for this value to a Java class.
ObjectconvertToJava(Class target)
Convert to Java object (for passing to external functions)
voiddisplay(int level)
Diagnostic print of expression structure
abstract NodeEnumerationenumerate()
Return an enumeration of this nodeset value.
NodeEnumerationenumerate(Context c, boolean sorted)
Return an enumeration of this nodeset value.
booleanequals(Value other)
Test whether a nodeset "equals" another Value
Valueevaluate(Context context)
Evaluate the Node Set.
NodeSetValueevaluateAsNodeSet(Context context)
Evaluate an expression as a NodeSet.
abstract intgetCount()
Count the nodes in the node-set.
intgetDataType()
Determine the data type of the expression
abstract NodeInfogetFirst()
Get the first node in the nodeset (in document order)
abstract booleanisSorted()
Test whether the value is known to be sorted
booleannotEquals(Value other)
Test whether a nodeset "not-equals" another Value
abstract voidsetSorted(boolean isSorted)
Set a flag to indicate whether the nodes are sorted.
abstract NodeSetValuesort()
Sort the nodes into document order.

Method Detail

asBoolean

public abstract boolean asBoolean()
Evaluate as a boolean.

Returns: true if the node set is not empty

asNumber

public double asNumber()
Evaluate as a number.

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

asString

public abstract String asString()
Convert to string 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)
Test how a nodeset compares to another Value under a relational comparison

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.

convertToJava

public Object convertToJava(Class target)
Convert to Java object (for passing to external functions)

display

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

enumerate

public abstract NodeEnumeration enumerate()
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)
Return an enumeration of this nodeset value. This is to satisfy the interface for Expression.

Parameters: context The context is ignored. sorted Indicates that the result must be in document order

equals

public boolean equals(Value other)
Test whether a nodeset "equals" another Value

evaluate

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

Parameters: context The context for evaluation (not used)

evaluateAsNodeSet

public NodeSetValue evaluateAsNodeSet(Context context)
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

getCount

public abstract int getCount()
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

Returns: Value.NODESET

getFirst

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

Returns: the first node

isSorted

public abstract boolean isSorted()
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)
Test whether a nodeset "not-equals" another Value

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

sort

public abstract NodeSetValue sort()
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).