Saxon.Api

 

 

Saxon.Api

Class XdmValue

Direct Known Subclasses
XdmEmptySequence, XdmItem

public class XdmValue
implements IEnumerable<XdmItem>

A value in the XDM data model. A value is a sequence of zero or more items, each item being an atomic value, a node, or a function item.

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 all single-item sequences will be instances of XdmItem: if you want to ensure this, use the XdmValue.Simplify property.

There are various ways of creating an XdmValue. To create an atomic value, use one of the constructors on XdmAtomicValue (which is a subtype of XdmValue). To construct an XdmNode (another subtype) by parsing an XML document, or by wrapping a DOM document, use a DocumentBuilder. To create a sequence of values, use the XdmValue.Append(XdmValue) method on this class to form a list from individual items or sublists.

An XdmValue is also returned as the result of evaluating a query using the XQuery and XPath interfaces.

The subtype XdmEmptySequence represents an empty sequence: an XdmValue of length zero. Again, there is no guarantee that every empty sequence will be represented as an instance of XdmEmptySequence, unless you use the Simplify property.

Constructor Summary

XdmValue (IEnumerable<XdmItem> items)

Create a value from a collection of items

 

Property Summary

 int Count

Get the number of items in the sequence

 XdmValue Simplify

Simplify an XDM value: that is, reduce it to the simplest possible form.

 

Method Summary

 XdmValue Append(XdmValue otherValue)

Create a new XdmValue by concatenating the sequences of items in this XdmValue and another XdmValue

 XdmValue DocumentOrder()

Return a new XdmValue containing the nodes present in this XdmValue, with duplicates eliminated, and sorted into document order

 IEnumerator<XdmItem> GetEnumerator()

Get the sequence of items in the form of an IEnumerator

 IList<XdmItem> GetList()

Get the sequence of items in the form of an IList

 XdmItem ItemAt(int i)

Get the i'th item in the value, counting from zero.

static XdmValue MakeValue(object o)

Make an XDM value from a .NET object.

 string ToString()

Create a string representation of the value. The is the result of serializing the value using the adaptive serialization method.

 net.sf.saxon.om.Sequence Unwrap()

Extract the underlying Saxon Sequence object from an XdmValue. This method is provided for the benefit of applications that need to mix use of the Saxon .NET API with direct use of the underlying objects and methods offered by the Java implementation.

static XdmValue Wrap(net.sf.saxon.om.Sequence value)

Create an XdmValue from an underlying Saxon Sequence object. This method is provided for the benefit of applications that need to mix use of the Saxon .NET API with direct use of the underlying objects and methods offered by the Java implementation.

 

Constructor Detail

XdmValue

public XdmValue(IEnumerable<XdmItem> items)

Create a value from a collection of items

Parameters:

items - An enumerable collection providing the items to make up the sequence. Every member of this collection must be an instance of XdmItem

Property Detail

Count

public int Count {get; }

Get the number of items in the sequence

Returns:

The number of items in the sequence. Note that for a single item (including a map or an array) this always returns 1 (one).

Simplify

public XdmValue Simplify {get; }

Simplify an XDM value: that is, reduce it to the simplest possible form.

  • If the sequence is empty, the result will be an instance of XdmEmptySequence
  • If the sequence is a single node, the result will be an instance of XdmNode
  • If it is a single atomic value, it will be an instance of XdmAtomicValue
  • If it is a map, it will be an instance of XdmMap
  • If it is an array, it will be an instance of XdmArray
  • If it is any other kind of function, it will be an instance of XdmFunctionItem
  • If it is a wrapper around a .NET object, it will be an instance of XdmExternalObjectValue

Returns:

The XDM value reduced to the simplest possible form

Method Detail

Append

public XdmValue Append(XdmValue otherValue)

Create a new XdmValue by concatenating the sequences of items in this XdmValue and another XdmValue

Neither of the input XdmValue objects is modified by this operation

Parameters:

otherValue -  The other XdmValue, whose items are to be appended to the items from this XdmValue

DocumentOrder

public XdmValue DocumentOrder()

Return a new XdmValue containing the nodes present in this XdmValue, with duplicates eliminated, and sorted into document order

Returns:

the same nodes, sorted into document order, with duplicates eliminated

GetEnumerator

public IEnumerator<XdmItem> GetEnumerator()

Get the sequence of items in the form of an IEnumerator

Returns:

An enumeration over the list of items making up this XDM value. Each item in the list will be an object of type XdmItem

GetList

public IList<XdmItem> GetList()

Get the sequence of items in the form of an IList

Returns:

The list of items making up this XDM value. Each item in the list will be an object of type XdmItem

ItemAt

public XdmItem ItemAt(int i)

Get the i'th item in the value, counting from zero.

Parameters:

i - the item that irequired, counting the first item in the sequence as item zero

Returns:

the i'th item in the sequence making up the value, counting from zero.

MakeValue

public static XdmValue MakeValue(object o)

Make an XDM value from a .NET object.

The supplied object may be any of the following:

  • An instance of XdmValue (for example an XdmAtomicValue, XdmMap, XdmArray or XdmNode), which is returned unchanged
  • An instance of Saxon's Java class net.sf.saxon.om.Sequence, which is wrapped as an XdmValue
  • An instance of IDictionary (which is wrapped as an XdmMap using the method XdmMap.MakeMap(IDictionary))
  • An array of objects, which are converted by applying these rules recursively, and then wrapped as an XdmArray.

Parameters:

o - The supplied object

Returns:

the result of conversion if successful

ToString

public override string ToString()

Create a string representation of the value. The is the result of serializing the value using the adaptive serialization method.

Returns:

a string representation of the value

Unwrap

public net.sf.saxon.om.Sequence Unwrap()

Extract the underlying Saxon Sequence object from an XdmValue. This method is provided for the benefit of applications that need to mix use of the Saxon .NET API with direct use of the underlying objects and methods offered by the Java implementation.

Returns:

An object representing the XDM value in the underlying Saxon implementation.

Wrap

public static XdmValue Wrap(net.sf.saxon.om.Sequence value)

Create an XdmValue from an underlying Saxon Sequence object. This method is provided for the benefit of applications that need to mix use of the Saxon .NET API with direct use of the underlying objects and methods offered by the Java implementation.

Parameters:

value - An object representing an XDM value in the underlying Saxon implementation. If the parameter is null, the method returns null.

Returns:

An XdmValue that wraps the underlying Saxon XDM value representation.