## Package net.sf.saxon.value

This package provides classes representing XPath values (that is, the results of an expression).

See:
Description

Class Summary
AnyURIValue: An XPath value of type xs:anyURI.
AtomicValue: The AtomicValue class corresponds to the concept of an atomic value in the XPath 2.0 data model.
Base64BinaryValue: A value of type xs:base64Binary
BigIntegerValue: An integer value: note this is a subtype of decimal in XML Schema, not a primitive type.
BooleanValue: A boolean XPath value
CalendarValue: Abstract superclass for Date, Time, and DateTime.
Cardinality: This class contains static methods to manipulate the cardinality property of a type.
Closure: A Closure represents a value that has not yet been evaluated: the value is represented by an expression, together with saved values of all the context variables that the expression depends on.
DateTimeValue: A value of type DateTime
DateValue: A value of type Date.
DayTimeDurationValue: A value of type xs:dayTimeDuration
DecimalValue: A decimal value
DoubleValue: A numeric (double precision floating point) value
DurationValue: A value of type xs:duration
EmptySequence: An EmptySequence object represents a sequence containing no members.
FloatingPointConverter: This is a utility class that handles formatting of numbers as strings.
FloatValue: A numeric (single precision floating point) value
GDateValue: Abstract superclass for the primitive types containing date components: xs:date, xs:gYear, xs:gYearMonth, xs:gMonth, xs:gMonthDay, xs:gDay
GDayValue: Implementation of the xs:gDay data type
GMonthDayValue: Implementation of the xs:gYear data type
GMonthValue: Implementation of the xs:gMonth data type
GYearMonthValue: Implementation of the xs:gYearMonth data type
GYearValue: Implementation of the xs:gYear data type
HexBinaryValue: A value of type xs:hexBinary
Int64Value: An integer value: note this is a subtype of decimal in XML Schema, not a primitive type.
IntegerRange: This class represents a sequence of consecutive ascending integers, for example 1 to 50.
IntegerValue: This class represents the XPath built-in type xs:integer.
MemoClosure: A MemoClosure represents a value that has not yet been evaluated: the value is represented by an expression, together with saved values of all the context variables that the expression depends on.
NotationValue: An xs:NOTATION value.
NumericValue: NumericValue is an abstract superclass for IntegerValue, DecimalValue, FloatValue, and DoubleValue
ObjectValue: An XPath value that encapsulates a Java object.
QNameValue: A QName value.
QualifiedNameValue: A qualified name: this is an abstract superclass for QNameValue and NotationValue, representing the XPath primitive types xs:QName and xs:NOTATION respectively
SequenceExtent: A sequence value implemented extensionally.
SequenceType: SequenceType: a sequence type consists of a primary type, which indicates the type of item, and a cardinality, which indicates the number of occurrences permitted.
ShareableSequence: A sequence value implemented extensionally using an extensible List whose leading part can be shared with other sequence values.
SingletonNode: A value that is a sequence containing zero or one nodes
StringValue: An atomic value of type xs:string
TextFragmentValue: This class represents a temporary tree whose root document node owns a single text node.
TimeValue: A value of type xs:time
UntypedAtomicValue: An Untyped Atomic value.
ValidationErrorValue: A ValidationErrorValue is a pseudo-value representing the result of a validation failure.
Value: A value is the result of an expression but it is also an expression in its own right.
Whitespace: This class provides helper methods and constants for handling whitespace
YearMonthDurationValue: A value of type xs:yearMonthDuration

## Package net.sf.saxon.value Description

This package provides classes representing XPath values (that is, the results of an expression). There are different classes for different types of value.

The principal class is:

Value:
This represents the result of evaluating an expression. But a Value is also an expression in its own right, reflecting the fact that literal values can be used syntactically wherever expressions can be used. `AtomicValue` is a subclass of `Value` that represents an atomic value: this in turn has subclasses for the different built-in data types: StringValue, NumericValue, BooleanValue, DateValue, and so on.

There are two classes used to represent integer values: `IntegerValue` for integers that fit comfortably in 64 bits, and `BigIntegerValue` for anything longer. Built-in subtypes of xs:integer, such as `xs:int` and `xs:short`, are always represented using an `IntegerValue`, except for `xs:unsignedLong`, which uses a `BigIntegerValue`.

In general a value is a sequence. A sequence that is instantiated in memory is represented by a `SequenceExtent` object. The code tries to pipeline execution so that a `SequenceExtent` is created as rarely as possible.

When an expression is evaluated lazily, the result is a `Closure`. A Closure contains the original expression, and a copy of the run-time context at the time evaluation was requested: that is, all the local variables and other information that it depends on, such as the context item. There are two kinds of Closure, and the system decides at compile time which to use. An ordinary Closure re-evaluates the expression every time the value is referenced; this is used only when the compiler decides that the value is likely to be referenced only once. A MemoClosure remembers the value the first time it is needed, so that subsequent references do not cause repeated evaluation of the expression.

Michael H. Kay
Saxonica Limited
9 February 2005

Copyright (C) Michael H. Kay. All rights reserved.