com.icl.saxon.expr

Class Value

Known Direct Subclasses:
BooleanValue, NodeSetValue, NumericValue, ObjectValue, StringValue

public abstract class Value
extends Expression

A value is the result of an expression but it is also an expression in its own right

Field Summary

static int
ANY
static int
BOOLEAN
Constants denoting the data types of an expression or value
static int
NODESET
static int
NUMBER
static int
OBJECT
static int
STRING

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

staticContext

Method Summary

boolean
asBoolean()
Convert the value to a Boolean
double
asNumber()
Convert the value to a Number
String
asString()
Convert the value to a String value
boolean
compare(int operator, Value other)
Test how a Value 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)
boolean
equals(Value other)
Test whether two values are equal.
Value
evaluate(Context context)
Evaluate the Value.
int
getDependencies()
Determine which aspects of the context the expression depends on.
protected static int
inverse(int operator)
Return the inverse of a relational operator, so that "a op b" can be rewritten as "b inverse(op) a"
boolean
notEquals(Value other)
Test whether two values are not-equal.
protected boolean
numericCompare(int operator, double x, double y)
Expression
reduce(int dependencies, Context context)
Perform a partial evaluation of the expression, by eliminating specified dependencies on the context.
Expression
simplify()
Simplify an expression
static double
stringToNumber(String s)
Static method to convert strings to numbers.

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

Field Details

ANY

public static final int ANY

Field Value:
-1


BOOLEAN

public static final int BOOLEAN
Constants denoting the data types of an expression or value

Field Value:
1


NODESET

public static final int NODESET

Field Value:
4


NUMBER

public static final int NUMBER

Field Value:
2


OBJECT

public static final int OBJECT

Field Value:
6


STRING

public static final int STRING

Field Value:
3

Method Details

asBoolean

public boolean asBoolean()
            throws XPathException
Convert the value to a Boolean

Returns:
the value converted to a Boolean


asNumber

public double asNumber()
            throws XPathException
Convert the value to a Number

Returns:
the value converted to a String


asString

public String asString()
            throws XPathException
Convert the value to a String value

Returns:
the value converted to a String


compare

public boolean compare(int operator,
                       Value other)
            throws XPathException
Test how a Value compares to another Value under a relational comparison. Note that the method is overridden for NodeSetValue

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


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)
            throws XPathException
Convert to Java object (for passing to external functions)

Parameters:
target - The class required by the external function

Returns:
an object of the target class


equals

public boolean equals(Value other)
            throws XPathException
Test whether two values are equal. See the XSL specification: if either operand is a nodeset, they are compared as nodesets; else if either is a boolean, they are compared as booleans; else if either operand is a number, they are compared as numbers; else they are compared as strings.

Returns:
a boolean giving the value of the expression, evaluated in the current context


evaluate

public Value evaluate(Context context)
            throws XPathException
Evaluate the Value. Null operation, because it has already been evaluated
Overrides:
evaluate in interface Expression

Parameters:
context - The context (not used)

Returns:
the value, unchanged


getDependencies

public 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
Overrides:
getDependencies in interface Expression


inverse

protected static final int inverse(int operator)
Return the inverse of a relational operator, so that "a op b" can be rewritten as "b inverse(op) a"


notEquals

public boolean notEquals(Value other)
            throws XPathException
Test whether two values are not-equal. Note that a!=b means the same as !(a=b) except where either a or b is a nodeset.

Returns:
a boolean giving the value of the expression, evaluated in the current context


numericCompare

protected final boolean numericCompare(int operator,
                                       double x,
                                       double y)


reduce

public Expression reduce(int dependencies,
                         Context context)
Perform a partial evaluation of the expression, by eliminating specified dependencies on the context.
Overrides:
reduce in interface Expression

Parameters:
dependencies - The dependencies to be removed
context - The context to be used for the partial evaluation

Returns:
a new expression that does not have any of the specified dependencies


simplify

public Expression simplify()
Simplify an expression
Overrides:
simplify in interface Expression

Returns:
the simplified expression


stringToNumber

public static double stringToNumber(String s)
Static method to convert strings to numbers. Might as well go here as anywhere else.

Parameters:
s - the String to be converted

Returns:
a double representing the value of the String; if it cannot be converted, return NaN (as required by the XSL specification)