Class ElementItem

java.lang.Object
org.rumbledb.items.xml.ElementItem
All Implemented Interfaces:
com.esotericsoftware.kryo.KryoSerializable, Serializable, Item

public class ElementItem extends Object implements Item
See Also:
  • Constructor Details

    • ElementItem

      public ElementItem()
    • ElementItem

      public ElementItem(Name dmNodeName, List<Item> children, List<Item> attributes)
      Constructed element with a resolved expanded name (e.g. from XQuery direct/computed constructors).
    • ElementItem

      public ElementItem(Node elementNode, List<Item> children, List<Item> attributes)
    • ElementItem

      public ElementItem(Node elementNode, List<Item> children, List<Item> attributes, Map<String,String> namespaceBindings)
  • Method Details

    • setXmlDocumentPosition

      public int setXmlDocumentPosition(String path, int current)
      Description copied from interface: Item
      Set the position of the Node inside the XML document (and path incase of multiple docs) for sorting / uniqueness
      Specified by:
      setXmlDocumentPosition in interface Item
      Parameters:
      path - the path of the XML document
      current - the current position
      Returns:
      the new position
    • getXmlDocumentPosition

      public XMLDocumentPosition getXmlDocumentPosition()
      Description copied from interface: Item
      Get the position of the Node inside the XML document (and path incase of multiple docs) for sorting / uniqueness
      Specified by:
      getXmlDocumentPosition in interface Item
      Returns:
      the XML document position
    • addParentToDescendants

      public void addParentToDescendants()
      Description copied from interface: Item
      Method sets the parent item for all descendents of the current item.
      Specified by:
      addParentToDescendants in interface Item
    • write

      public void write(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Output output)
      Specified by:
      write in interface com.esotericsoftware.kryo.KryoSerializable
    • read

      public void read(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Input input)
      Specified by:
      read in interface com.esotericsoftware.kryo.KryoSerializable
    • isNode

      public boolean isNode()
      Description copied from interface: Item
      Tests whether the item is an XML node.
      Specified by:
      isNode in interface Item
      Returns:
      true if it is an XML node, false otherwise.
    • isElementNode

      public boolean isElementNode()
      Description copied from interface: Item
      Tests whether the item is an XML Element node.
      Specified by:
      isElementNode in interface Item
      Returns:
      true if it is an XML Element node, false otherwise.
    • equals

      public boolean equals(Object other)
      Description copied from interface: Item
      Tests for logical equality. The semantics are that of the eq operator.
      Specified by:
      equals in interface Item
      Overrides:
      equals in class Object
      Parameters:
      other - another item.
      Returns:
      true it is equal to other, false otherwise.
    • attributes

      public List<Item> attributes()
      Description copied from interface: Item
      XDM 3.1 Section 5.1 attributes Accessor. dm:attributes($n as node()) as attribute()* "The dm:attributes accessor returns the dynamic, unordered set of attribute nodes that have the node as their parent. It is defined only on element and document nodes; for other node kinds it returns the empty sequence."
      Specified by:
      attributes in interface Item
    • children

      public List<Item> children()
      Description copied from interface: Item
      XDM 3.1 Section 5.3 children Accessor. dm:children($n as node()) as node()* "The dm:children accessor returns the dynamic, ordered sequence of child nodes of the node. It is defined on all node kinds except attribute and namespace nodes; for those node kinds it returns the empty sequence."
      Specified by:
      children in interface Item
    • nodeKind

      public String nodeKind()
      XDM 3.1 Section 6.2 Element Node Accessors — node-kind. "For an Element Node, dm:node-kind returns the string \"element\"."
      Specified by:
      nodeKind in interface Item
    • baseUri

      public List<Item> baseUri()
      XDM 3.1 Section 6.2 Element Node Accessors — base-uri. "For an Element Node, dm:base-uri returns the base URI of the element node, if it has one; otherwise it returns the empty sequence." RumbleDB does not currently track base URIs for element nodes, so this implementation returns null to represent the empty sequence.
      Specified by:
      baseUri in interface Item
    • documentUri

      public List<Item> documentUri()
      XDM 3.1 Section 6.2 Element Node Accessors — document-uri. "For an Element Node, dm:document-uri returns the document URI of the document node that is the root of the tree containing the element, if it has one; otherwise it returns the empty sequence." This implementation delegates to the parent, if any, otherwise returns null.
      Specified by:
      documentUri in interface Item
    • declaredNamespaceNodes

      public List<Item> declaredNamespaceNodes()
      Description copied from interface: Item
      Helper accessor for XML element nodes: returns namespace nodes for the namespace bindings declared directly on the element. This does not include inherited or statically known namespaces — only the bindings explicitly declared on the element (for example via xmlns attributes). Non-element nodes must override this to return the empty sequence.
      Specified by:
      declaredNamespaceNodes in interface Item
    • namespaceNodes

      public List<Item> namespaceNodes()
      Description copied from interface: Item
      XDM 3.1 Section 5.7 namespace-nodes Accessor. dm:namespace-nodes($n as node()) as namespace-node()* "The dm:namespace-nodes accessor returns the dynamic, unordered set of Namespace Nodes. It is defined on all seven node kinds." This default implementation is only a placeholder on the generic Item interface and must be overridden by XML node implementations that support namespaces.
      Specified by:
      namespaceNodes in interface Item
    • isId

      public boolean isId()
      XDM 3.1 Section 6.2 Element Node Accessors — is-id. "For an Element Node, dm:is-id returns false."
      Specified by:
      isId in interface Item
    • isIdrefs

      public boolean isIdrefs()
      XDM 3.1 Section 6.2 Element Node Accessors — is-idrefs. "For an Element Node, dm:is-idrefs returns false."
      Specified by:
      isIdrefs in interface Item
    • nilled

      public List<Item> nilled()
      XDM 3.1 Section 6.2 Element Node Accessors — nilled. "For an Element Node, dm:nilled returns true if the element is nilled, false if it is not nilled, or the empty sequence if the concept of nilled does not apply." RumbleDB does not currently support XML Schema nilled elements, so this implementation returns the empty sequence.
      Specified by:
      nilled in interface Item
    • nodeName

      public Name nodeName()
      Description copied from interface: Item
      XDM 3.1 Section 5.10 node-name Accessor. dm:node-name($n as node()) as xs:QName? "The dm:node-name accessor returns the name of the node as an xs:QName, or the empty sequence if the node does not have a name."
      Specified by:
      nodeName in interface Item
      Returns:
      the expanded name (Name) of the node, or null when the accessor yields the empty sequence
    • parent

      public Item parent()
      Description copied from interface: Item
      XDM 3.1 Section 5.11 parent Accessor. dm:parent($n as node()) as node()? "The dm:parent accessor returns the parent of the node, or the empty sequence if the node has no parent."
      Specified by:
      parent in interface Item
    • getStringValue

      public String getStringValue()
      Description copied from interface: Item
      Returns the string value of the item, if it is an atomic item.
      Specified by:
      getStringValue in interface Item
      Returns:
      the string value.
    • getDynamicType

      public ItemType getDynamicType()
      Description copied from interface: Item
      Returns the dynamic type of the item (only for error message purposes).
      Specified by:
      getDynamicType in interface Item
      Returns:
      the dynamic type as an item type.
    • setParent

      public void setParent(Item parent)
      Specified by:
      setParent in interface Item
    • typeName

      public List<Item> typeName()
      XDM 3.1 Section 6.2 Element Node Accessors — type-name. "For an Element Node, dm:type-name returns the name of the dynamic type of the element node, or the empty sequence if the node is untyped." RumbleDB does not currently support schema-validated element types, so the dynamic type-name is not available and this method returns null to represent the empty sequence.
      Specified by:
      typeName in interface Item
    • typedValue

      public List<Item> typedValue()
      XDM 3.1 Section 6.2 Element Node Accessors — typed-value. "For an Element Node, dm:typed-value returns the typed value of the element node as a sequence of zero or more atomic values." This implementation delegates to atomizedValue(), which currently computes a best-effort typed value by concatenating the atomized values of the element's children in document order.
      Specified by:
      typedValue in interface Item
    • addOrReplaceNamespace

      public void addOrReplaceNamespace(Item namespaceItem)
    • hashCode

      public int hashCode()
      Description copied from interface: Item
      Computes a hash code.
      Specified by:
      hashCode in interface Item
      Overrides:
      hashCode in class Object
      Returns:
      a hash code as an int.
    • atomizedValue

      public List<Item> atomizedValue()
      Description copied from interface: Item
      XDM 3.1 Section 5.12 string-value Accessor. dm:string-value($n as node()) as xs:string "The dm:string-value accessor returns the string-value of the node as defined for each node kind." In this API, node string values are exposed via getStringValue() and the default implementation of dm:typed-value delegates to atomizedValue().
      Specified by:
      atomizedValue in interface Item
    • getEffectiveBooleanValue

      public boolean getEffectiveBooleanValue()
      Description copied from interface: Item
      Returns the effective boolean value of the item, if atomic.
      Specified by:
      getEffectiveBooleanValue in interface Item
      Returns:
      the effective boolean value.