Class XdmItem

java.lang.Object
net.sf.saxon.s9api.XdmValue
net.sf.saxon.s9api.XdmItem
All Implemented Interfaces:
Iterable<XdmItem>
Direct Known Subclasses:
XdmAtomicValue, XdmExternalObject, XdmFunctionItem, XdmNode

public abstract class XdmItem extends XdmValue
The class XdmItem represents an item in a sequence, as defined by the XDM data model. An item may be an atomic value, a node, a function item (including maps and arrays), or an external object.

An item is a member of a sequence, but it can also be considered as a sequence (of length one) in its own right. XdmItem is a subtype of XdmValue because every Item in the XDM data model is also a value.

It cannot be assumed that every sequence of length one will be represented by an XdmItem. It is quite possible for an XdmValue that is not an XdmItem to hold a singleton sequence.

Saxon provides a number of concrete subclasses of XdmItem, namely XdmAtomicValue, XdmNode, XdmFunctionItem and XdmExternalObject. Users must not attempt to create additional subclasses.

  • Constructor Details

    • XdmItem

      public XdmItem(Item item)
      Construct an XdmItem as a wrapper around an existing Saxon Item object
      Parameters:
      item - the Item object to be wrapped. This can be retrieved using the getUnderlyingValue() method.
      Throws:
      NullPointerException - if item is null
      Since:
      9.5 (previously a protected constructor)
  • Method Details

    • wrapItem

      protected static XdmItem wrapItem(Item item)
    • wrapItem

      protected static XdmNode wrapItem(NodeInfo item)
    • wrapItem

      protected static XdmAtomicValue wrapItem(AtomicValue item)
    • getUnderlyingValue

      public Item getUnderlyingValue()
      Get the underlying implementation object representing the value. This method allows access to lower-level Saxon functionality, including classes and methods that offer no guarantee of stability across releases.
      Overrides:
      getUnderlyingValue in class XdmValue
      Returns:
      the underlying implementation object representing the value
      Since:
      9.8 (previously inherited from XdmValue which returns a Sequence)
    • getStringValue

      public String getStringValue()
      Get the string value of the item. For a node, this gets the string value of the node. For an atomic value, it has the same effect as casting the value to a string. In all cases the result is the same as applying the XPath string() function.

      For atomic values, the result is the same as the result of calling toString. This is not the case for nodes, where toString returns an XML serialization of the node.

      Returns:
      the result of converting the item to a string.
      Throws:
      IllegalStateException - if the item is of a type that does not have a string value, for example a function (including a map or array).
    • getUnicodeStringValue

      public UnicodeString getUnicodeStringValue()
      Get the string value of the item. For a node, this gets the string value of the node. For an atomic value, it has the same effect as casting the value to a string. In all cases the result is the same as applying the XPath string() function.

      The string returned is the same as the result of getStringValue(), but represented as an instance of UnicodeString.

      Returns:
      the result of converting the item to a string.
      Throws:
      IllegalStateException - if the item is of a type that does not have a string value, for example a function (including a map or array).
    • isNode

      public boolean isNode()
      Determine whether the item is a node or some other type of item
      Returns:
      true if the item is a node, false if it is an atomic value or a function (including maps and arrays)
      Since:
      10.0
    • isAtomicValue

      public boolean isAtomicValue()
      Determine whether the item is an atomic value or some other type of item
      Returns:
      true if the item is an atomic value, false if it is a node or a function (including maps and arrays)
    • size

      public int size()
      Get the number of items in the sequence
      Overrides:
      size in class XdmValue
      Returns:
      the number of items in the value. For an item (including a map or array) this is always 1 (one).
    • asMap

      public Map<XdmAtomicValue,XdmValue> asMap()
      If this item is a map, return a corresponding Java Map.
      Returns:
      if this item is a map, return a mutable Map from atomic values to (sequence) values, containing the same entries as this map. Otherwise return null.
      Since:
      9.6.
    • stream

      public XdmStream<? extends XdmItem> stream()
      Get a stream comprising the items in this value
      Overrides:
      stream in class XdmValue
      Returns:
      a Stream over the items in this value
      Since:
      9.9
    • matches

      public boolean matches(ItemType type)
      Determine whether this item matches a given item type.
      Parameters:
      type - the item type to be tested against this item
      Returns:
      true if the item matches this item type, false if it does not match.
      Since:
      9.9