/**
* Evaluate in a general context
*/
public Item evaluateItem(XPathContext context) throws XPathException {
Item arg0 = argument[0].evaluateItem(context);
if (arg0==null) {
return DoubleValue.NaN;
}
if (arg0 instanceof BooleanValue || arg0 instanceof NumericValue) {
ConversionResult result = ((AtomicValue)arg0).convert(BuiltInAtomicType.DOUBLE, true, context);
if (result instanceof ValidationFailure) {
return DoubleValue.NaN;
} else {
return (AtomicValue)result;
}
}
if (arg0 instanceof StringValue && !(arg0 instanceof AnyURIValue)) {
CharSequence s = arg0.getStringValueCS();
try {
return new DoubleValue(Value.stringToNumber(s));
} catch (NumberFormatException e) {
return DoubleValue.NaN;
}