Package net.sf.saxon.value
Class Value
java.lang.Object
net.sf.saxon.value.Value
- All Implemented Interfaces:
Serializable
,SequenceIterable
,ValueRepresentation
- Direct Known Subclasses:
AtomicValue
,Closure
,EmptySequence
,IntegerRange
,SequenceExtent
,ShareableSequence
,SingletonNode
public abstract class Value
extends Object
implements Serializable, SequenceIterable, ValueRepresentation
A value is the result of an expression but it is also an expression in its own right.
Note that every value can be regarded as a sequence - in many cases, a sequence of
length one.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Class[]
static final int
Constant returned by compareTo() method to indicate an indeterminate ordering between two valuesFields inherited from interface net.sf.saxon.om.ValueRepresentation
EMPTY_VALUE_ARRAY
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionasItem()
Return the value in the form of an Itemstatic Item
asItem
(ValueRepresentation value) Static method to make an Item from a Valuestatic SequenceIterator
Static method to get an Iterator over any ValueRepresentation (which may be either a Value or a NodeInfostatic Value
Static method to make a Value from a given Item (which may be either an AtomicValue or a NodeInfovoid
checkPermittedContents
(SchemaType parentType, StaticContext env, boolean whole) Check statically that the results of the expression are capable of constructing the content of a given schema type.static Object
convertToJava
(Item item) Convert an XPath value to a Java object.boolean
Get the effective boolean value of the expression.boolean
Compare two (sequence) values for equality.static Value
Static method to get a Value from an ItemGet the canonical lexical representation as defined in XML Schema.int
Determine the cardinalityDetermine the data type of the items in the expression, if possiblestatic SequenceIterator
Get a SequenceIterator over a ValueRepresentationint
Get the length of the sequenceGet a Comparable value that implements the XML Schema ordering comparison semantics for this value.Convert the value to a string, using the serialization rules.Get the value of the item as a CharSequence.itemAt
(int n) Get the n'th item in the sequence (starting from 0).abstract SequenceIterator
iterate()
Iterate over the items contained in this value.final SequenceIterator
iterate
(XPathContext context) Return an iterator over the results of evaluating an expressionstatic QNameValue
makeQNameValue
(Object object, Configuration config) Temporary method to make a QNameValue from a JAXP 1.3 QName, without creating a compile-time link to the JDK 1.5 QName classvoid
process
(XPathContext context) Process the value as an instruction, without returning any tail callsreduce()
Reduce a value to its simplest form.static double
Static method to convert strings to doubles.toString()
Convert to a string for diagnostic output
-
Field Details
-
INDETERMINATE_ORDERING
public static final int INDETERMINATE_ORDERINGConstant returned by compareTo() method to indicate an indeterminate ordering between two values- See Also:
-
EMPTY_CLASS_ARRAY
-
-
Constructor Details
-
Value
public Value()
-
-
Method Details
-
asValue
Static method to make a Value from a given Item (which may be either an AtomicValue or a NodeInfo- Parameters:
val
- The supplied value, or null, indicating the empty sequence.- Returns:
- The supplied value, if it is a value, or a SingletonNode that wraps the item, if it is a node. If the supplied value was null, return an EmptySequence
-
asItem
Static method to make an Item from a Value- Parameters:
value
- the value to be converted- Returns:
- null if the value is an empty sequence; or the only item in the value if it is a singleton sequence
- Throws:
XPathException
- if the Value contains multiple items
-
asItem
Return the value in the form of an Item- Returns:
- the value in the form of an Item
- Throws:
XPathException
-
fromItem
Static method to get a Value from an Item- Parameters:
item
- the supplied item- Returns:
- the item expressed as a Value
-
asIterator
Static method to get an Iterator over any ValueRepresentation (which may be either a Value or a NodeInfo- Parameters:
val
- The supplied value, or null, indicating the empty sequence.- Returns:
- The supplied value, if it is a value, or a SingletonNode that wraps the item, if it is a node. If the supplied value was null, return an EmptySequence
- Throws:
XPathException
-
stringToNumber
Static method to convert strings to doubles.- Parameters:
s
- the String to be converted- Returns:
- a double representing the value of the String
- Throws:
NumberFormatException
- if the value cannot be converted
-
getIterator
Get a SequenceIterator over a ValueRepresentation- Parameters:
val
- the value to iterate over- Returns:
- the iterator
- Throws:
XPathException
-
iterate
Iterate over the items contained in this value.- Returns:
- an iterator over the sequence of items
- Throws:
XPathException
- if a dynamic error occurs. This is possible only in the case of values that are materialized lazily, that is, where the iterate() method leads to computation of an expression that delivers the values.
-
iterate
Return an iterator over the results of evaluating an expression- Specified by:
iterate
in interfaceSequenceIterable
- Parameters:
context
- the dynamic evaluation context (not used in this implementation)- Returns:
- an iterator over the items delivered by the expression
- Throws:
XPathException
-
getStringValueCS
Get the value of the item as a CharSequence. This is in some cases more efficient than the version of the method that returns a String.- Specified by:
getStringValueCS
in interfaceValueRepresentation
- Throws:
XPathException
- The method can fail if evaluation of the value has been deferred, and if a failure occurs during the deferred evaluation. No failure is possible in the case of an AtomicValue or a Node.
-
getCanonicalLexicalRepresentation
Get the canonical lexical representation as defined in XML Schema. This is not always the same as the result of casting to a string according to the XPath rules.- Returns:
- the canonical lexical representation if defined in XML Schema; otherwise, the result of casting to string according to the XPath 2.0 rules
-
getItemType
Determine the data type of the items in the expression, if possible- Parameters:
th
- The TypeHierarchy. Can be null if the target is an AtomicValue.- Returns:
- for the default implementation: AnyItemType (not known)
-
getCardinality
public int getCardinality()Determine the cardinality- Returns:
- the cardinality
-
itemAt
Get the n'th item in the sequence (starting from 0). This is defined for all Values, but its real benefits come for a sequence Value stored extensionally (or for a MemoClosure, once all the values have been read)- Parameters:
n
- position of the required item, counting from zero.- Returns:
- the n'th item in the sequence, where the first item in the sequence is numbered zero. If n is negative or >= the length of the sequence, returns null.
- Throws:
XPathException
-
getLength
Get the length of the sequence- Returns:
- the number of items in the sequence
- Throws:
XPathException
-
process
Process the value as an instruction, without returning any tail calls- Parameters:
context
- The dynamic context, giving access to the current node, the current variables, etc.- Throws:
XPathException
-
getStringValue
Convert the value to a string, using the serialization rules. For atomic values this is the same as a cast; for sequence values it gives a space-separated list.- Specified by:
getStringValue
in interfaceValueRepresentation
- Throws:
XPathException
- The method can fail if evaluation of the value has been deferred, and if a failure occurs during the deferred evaluation. No failure is possible in the case of an AtomicValue.
-
effectiveBooleanValue
Get the effective boolean value of the expression. This returns false if the value is the empty sequence, a zero-length string, a number equal to zero, or the boolean false. Otherwise it returns true.- Returns:
- the effective boolean value
- Throws:
XPathException
- if any dynamic error occurs evaluating the expression
-
getSchemaComparable
Get a Comparable value that implements the XML Schema ordering comparison semantics for this value. The default implementation is written to compare sequences of atomic values. This method is overridden for AtomicValue and its subclasses.In the case of data types that are partially ordered, the returned Comparable extends the standard semantics of the compareTo() method by returning the value
INDETERMINATE_ORDERING
when there is no defined order relationship between two given values.- Returns:
- a Comparable that follows XML Schema comparison rules
-
equals
Compare two (sequence) values for equality. This method implements the XPath eq operator, for cases where it is defined. For values containing nodes, nodes are compared for identity. In cases where eq is not defined, it throws ClassCastException. In cases where the result of eq is an empty sequence, this function returns false, except that two empty sequences compare equal. The method also returns a ClassCastException if any failure occurs evaluating either of the values. -
checkPermittedContents
public void checkPermittedContents(SchemaType parentType, StaticContext env, boolean whole) throws XPathException Check statically that the results of the expression are capable of constructing the content of a given schema type.- Parameters:
parentType
- The schema typeenv
- the static contextwhole
- true if this value accounts for the entire content of the containing node- Throws:
XPathException
- if the expression doesn't match the required content type
-
reduce
Reduce a value to its simplest form. If the value is a closure or some other form of deferred value such as a FunctionCallPackage, then it is reduced to a SequenceExtent. If it is a SequenceExtent containing a single item, then it is reduced to that item. One consequence that is exploited by class FilterExpression is that if the value is a singleton numeric value, then the result will be an instance of NumericValue- Returns:
- the value in simplified form
- Throws:
XPathException
-
makeQNameValue
Temporary method to make a QNameValue from a JAXP 1.3 QName, without creating a compile-time link to the JDK 1.5 QName class- Parameters:
object
- an instance of javax.xml.namespace.QNameconfig
- the Saxon configuration (used for dynamic loading)- Returns:
- a corresponding Saxon QNameValue, or null if any error occurs performing the conversion
-
toString
Convert to a string for diagnostic output -
convertToJava
Convert an XPath value to a Java object. An atomic value is returned as an instance of the best available Java class. If the item is a node, the node is "unwrapped", to return the underlying node in the original model (which might be, for example, a DOM or JDOM node).- Parameters:
item
- the item to be converted- Returns:
- the value after conversion
- Throws:
XPathException
-