public class XdmValue extends java.lang.Object implements java.lang.Iterable<XdmItem>
An XdmValue is immutable.
A sequence consisting of a single item may be represented as an instance of XdmItem
,
which is a subtype of XdmValue. However, there is no guarantee that a sequence of length one
will always be an instance of XdmItem.
Similarly, a zero-length sequence may be represented as an instance of XdmEmptySequence
,
but there is no guarantee that every sequence of length zero will always be an instance of
XdmEmptySequence.
Modifier | Constructor and Description |
---|---|
protected |
XdmValue() |
|
XdmValue(java.lang.Iterable<? extends XdmItem> items)
Create an XdmValue as a sequence of XdmItem objects
|
|
XdmValue(java.util.Iterator<? extends XdmItem> iterator)
Create an XdmValue containing the items returned by an
Iterator . |
|
XdmValue(java.util.stream.Stream<? extends XdmItem> stream)
Create an XdmValue containing the results of reading a Stream
|
Modifier and Type | Method and Description |
---|---|
XdmValue |
append(XdmValue otherValue)
Create a new XdmValue by concatenating the contents of this XdmValue and another
XdmValue into a single sequence.
|
XdmValue |
documentOrder()
Return a new XdmValue containing the nodes present in this XdmValue,
with duplicates eliminated, and sorted into document order
|
protected static XdmValue |
fromGroundedValue(GroundedValue<?> value) |
GroundedValue<?> |
getUnderlyingValue()
Get the underlying implementation object representing the value.
|
XdmItem |
itemAt(int n)
Get the n'th item in the value, counting from zero.
|
java.util.Iterator<XdmItem> |
iterator()
Get an iterator over the items in this value.
|
static XdmValue |
makeSequence(java.lang.Iterable<?> list)
Make an XDM sequence from a Java
Iterable . |
static XdmValue |
makeValue(java.lang.Object o)
Make an XDM value from a Java object.
|
<T extends XdmItem> |
select(Step<T> step)
Get a stream of items by applying a
Step to the items in this value. |
protected void |
setValue(GroundedValue<?> value) |
int |
size()
Get the number of items in the sequence
|
XdmStream<? extends XdmItem> |
stream()
Get a stream comprising the items in this value
|
java.lang.String |
toString()
Create a string representation of the value.
|
static XdmValue |
wrap(AtomicSequence value) |
static XdmValue |
wrap(Sequence<?> value)
Create an XdmValue that wraps an existing Saxon Sequence
|
protected XdmValue()
public XdmValue(java.lang.Iterable<? extends XdmItem> items)
items
- a sequence of XdmItem objects. Note that if this is supplied as a list or similar
collection, subsequent changes to the list/collection will have no effect on the XdmValue.public XdmValue(java.util.Iterator<? extends XdmItem> iterator) throws SaxonApiException
Iterator
.iterator
- the iterator that supplies the valuesSaxonApiException
- if an error occurs reading values from the supplied iteratorXdmSequenceIterator
.public XdmValue(java.util.stream.Stream<? extends XdmItem> stream) throws SaxonApiException
stream
- the stream to be readSaxonApiException
protected static XdmValue fromGroundedValue(GroundedValue<?> value)
protected void setValue(GroundedValue<?> value)
public static XdmValue wrap(Sequence<?> value)
value
- the supplied Sequence (which may be a singleton Item),SaxonApiUncheckedException
- if the supplied Sequence is not yet fully evaluated, and evaluation
of the underlying expression fails with a dynamic error.public static XdmValue wrap(AtomicSequence value)
public XdmValue append(XdmValue otherValue)
Note: creating a sequence of N values by successive calls on this method takes time proportional to N-squared.
otherValue
- the value to be appendedpublic int size()
SaxonApiUncheckedException
- if the value is lazily evaluated and the delayed
evaluation fails with a dynamic error.public XdmItem itemAt(int n) throws java.lang.IndexOutOfBoundsException, SaxonApiUncheckedException
n
- the item that is required, counting the first item in the sequence as item zerojava.lang.IndexOutOfBoundsException
- if n is less than zero or greater than or equal to the number
of items in the valueSaxonApiUncheckedException
- if the value is lazily evaluated and the delayed
evaluation fails with a dynamic error.public java.util.Iterator<XdmItem> iterator() throws SaxonApiUncheckedException
iterator
in interface java.lang.Iterable<XdmItem>
SaxonApiUncheckedException
- if the value is lazily evaluated and the delayed
evaluation fails with a dynamic error.public GroundedValue<?> getUnderlyingValue()
public java.lang.String toString()
toString
in class java.lang.Object
public static XdmValue makeSequence(java.lang.Iterable<?> list) throws java.lang.IllegalArgumentException
Iterable
. Each value delivered by the iterable
is first converted to an XDM value using the makeValue(Object)
method;
if the result is anything other than a single XDM item, it is then wrapped in an
XdmArray
.java.lang.IllegalArgumentException
- if conversion is not possiblepublic static XdmValue makeValue(java.lang.Object o) throws java.lang.IllegalArgumentException
XdmValue
(for example, an
XdmNode
or XdmAtomicValue
or XdmArray
or XdmMap
),
which is returned unchangedSequence
(for example, a
NodeInfo
or AtomicValue
),
which is wrapped as an XdmValue
Map
, which is converted to an XDM Map using
the XdmMap.makeMap(java.util.Map)
methodXdmArray.makeArray(java.lang.Object[])
methodIterable
, which is converted to an XDM sequence
using the makeSequence(Iterable)
methodXdmAtomicValue.makeAtomicValue(Object)
java.lang.IllegalArgumentException
- if conversion is not possiblepublic XdmValue documentOrder() throws SaxonApiException
SaxonApiException
- if anything goes wrong (typically during delayed evaluation of the
input sequence)java.lang.ClassCastException
- if the sequence contains items that are not nodespublic XdmStream<? extends XdmItem> stream()
public <T extends XdmItem> XdmStream<T> select(Step<T> step)
Step
to the items in this value. This operation
is analogous to the Stream.flatMap
operation in Java, or to the "!" operator
in XPath.step
- the Step to be applied to the items in this valueCopyright (c) 2004-2020 Saxonica Limited. All rights reserved.