com.icl.saxon.expr

Class Value

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 intANY
static intBOOLEAN
Constants denoting the data types of an expression or value
static intNODESET
static intNUMBER
static intOBJECT
static intSTRING
Method Summary
abstract booleanasBoolean()
Convert the value to a Boolean
abstract doubleasNumber()
Convert the value to a Number
abstract StringasString()
Convert the value to a String value
booleancompare(int operator, Value other)
Test how a Value compares to another Value under a relational comparison.
abstract intconversionPreference(Class required)
Get conversion preference for this value to a Java class.
abstract ObjectconvertToJava(Class target)
Convert to Java object (for passing to external functions)
booleanequals(Value other)
Test whether two values are equal.
Valueevaluate(Context context)
Evaluate the Value.
intgetDependencies()
Determine which aspects of the context the expression depends on.
protected static intinverse(int operator)
Return the inverse of a relational operator, so that "a op b" can be rewritten as "b inverse(op) a"
booleannotEquals(Value other)
Test whether two values are not-equal.
protected booleannumericCompare(int operator, double x, double y)
Expressionreduce(int dependencies, Context context)
Perform a partial evaluation of the expression, by eliminating specified dependencies on the context.
Expressionsimplify()
Simplify an expression
static doublestringToNumber(String s)
Static method to convert strings to numbers.

Field Detail

ANY

public static final int ANY

BOOLEAN

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

NODESET

public static final int NODESET

NUMBER

public static final int NUMBER

OBJECT

public static final int OBJECT

STRING

public static final int STRING

Method Detail

asBoolean

public abstract boolean asBoolean()
Convert the value to a Boolean

Returns: the value converted to a Boolean

asNumber

public abstract double asNumber()
Convert the value to a Number

Returns: the value converted to a String

asString

public abstract String asString()
Convert the value to a String value

Returns: the value converted to a String

compare

public boolean compare(int operator, Value other)
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 abstract int conversionPreference(Class required)
Get conversion preference for this value to a Java class. A low result indicates higher preference.

convertToJava

public abstract Object convertToJava(Class target)
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)
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)
Evaluate the Value. Null operation, because it has already been evaluated

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

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

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

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)