Class TinyElementImpl

All Implemented Interfaces:
Source, SourceLocator, ActiveSource, GroundedValue, Item, NodeInfo, Sequence, Location, Locator
Direct Known Subclasses:
TinyTextualElement

public class TinyElementImpl extends TinyParentNodeImpl
A node in the XML parse tree representing an XML element.

This class is an implementation of NodeInfo. The object is a wrapper around one entry in the arrays maintained by the TinyTree. Note that the same node might be represented by different TinyElementImpl objects at different times.

  • Constructor Details

    • TinyElementImpl

      public TinyElementImpl(TinyTree tree, int nodeNr)
      Constructor - create a tiny element node
      Parameters:
      tree - the Tinytree containing the node
      nodeNr - the node number
  • Method Details

    • getNodeKind

      public final int getNodeKind()
      Return the type of node.
      Returns:
      Type.ELEMENT
      See Also:
    • getBaseURI

      public String getBaseURI()
      Get the base URI of this element node. This will be the same as the System ID unless xml:base has been used.
      Specified by:
      getBaseURI in interface NodeInfo
      Overrides:
      getBaseURI in class TinyNodeImpl
      Returns:
      the base URI of the node. This may be null if the base URI is unknown, including the case where the node has no parent.
    • getSchemaType

      public SchemaType getSchemaType()
      Get the type annotation of this node, if any. The type annotation is represented as SchemaType object.

      Types derived from a DTD are not reflected in the result of this method.

      Specified by:
      getSchemaType in interface NodeInfo
      Overrides:
      getSchemaType in class TinyNodeImpl
      Returns:
      For element and attribute nodes: the type annotation derived from schema validation (defaulting to xs:untyped and xs:untypedAtomic in the absence of schema validation). For comments, text nodes, processing instructions, and namespaces: null. For document nodes, either xs:untyped if the document has not been validated, or xs:anyType if it has.
      Since:
      9.4
    • atomize

      public AtomicSequence atomize() throws XPathException
      Get the typed value.
      Returns:
      the typed value. It will be a Value representing a sequence whose items are atomic values.
      Throws:
      XPathException - if the node has no typed value, for example if it is an element node with element-only content
    • getDeclaredNamespaces

      public NamespaceBinding[] getDeclaredNamespaces(NamespaceBinding[] buffer)
      Get all namespace undeclarations and undeclarations defined on this element.
      Specified by:
      getDeclaredNamespaces in interface NodeInfo
      Overrides:
      getDeclaredNamespaces in class TinyNodeImpl
      Parameters:
      buffer - If this is non-null, and the result array fits in this buffer, then the result may overwrite the contents of this array, to avoid the cost of allocating a new array on the heap.
      Returns:
      An array of objects representing the namespace declarations and undeclarations present on this element. For a node other than an element, return null. Otherwise, the returned array is a sequence of namespace binding objects (essentially prefix/uri pairs) If the URI is null, then this is a namespace undeclaration rather than a declaration. The XML namespace is never included in the list. If the supplied array is larger than required, then the first unused entry will be set to null.
    • getAllNamespaces

      public NamespaceMap getAllNamespaces()
      Description copied from class: TinyNodeImpl
      Get all the namespace bindings that are in-scope for this element.

      For an element return all the prefix-to-uri bindings that are in scope. This may include a binding to the default namespace (represented by a prefix of ""). It will never include "undeclarations" - that is, the namespace URI will never be empty; the effect of an undeclaration is to remove a binding from the in-scope namespaces, not to add anything.

      For a node other than an element, returns null.

      Specified by:
      getAllNamespaces in interface NodeInfo
      Overrides:
      getAllNamespaces in class TinyNodeImpl
      Returns:
      the in-scope namespaces for an element, or null for any other kind of node.
    • hasUniformNamespaces

      public boolean hasUniformNamespaces()
      Ask whether the element is the root of a subtree in which no descendant element has any local namespace declarations or undeclarations; that is, all elements in the subtree have the same in-scope namespace bindings.
      Returns:
      true if it is known that no descendant elements have in-scope namespaces different from those of this element.
    • getAttributeValue

      public String getAttributeValue(NamespaceUri uri, String local)
      Get the string value of a given attribute of this node
      Specified by:
      getAttributeValue in interface NodeInfo
      Overrides:
      getAttributeValue in class TinyNodeImpl
      Parameters:
      uri - the namespace URI of the attribute name. Supply the empty string for an attribute that is in no namespace
      local - the local part of the attribute name.
      Returns:
      the attribute value if it exists, or null if it does not exist. Always returns null if this node is not an element.
      Since:
      9.4
    • getAttributeValue

      public String getAttributeValue(int fp)
      Get the value of the attribute with a given fingerprint.
      Parameters:
      fp - the fingerprint of the required attribute
      Returns:
      the string value of the attribute if present, or null if absent
    • copy

      public void copy(Receiver receiver, int copyOptions, Location location) throws XPathException
      Copy this node to a given receiver
      Parameters:
      receiver - the destination of the copy
      copyOptions - determines handling of namespaces, etc
      location - location information associated with the event
      Throws:
      XPathException - if any downstream error occurs
    • checkNotNamespaceSensitiveElement

      protected void checkNotNamespaceSensitiveElement(SchemaType type, int nodeNr) throws XPathException
      Check whether the content of an element is namespace-sensitive
      Parameters:
      type - the type annotation of the node
      nodeNr - the node number of the element
      Throws:
      XPathException - if an error occurs
    • isId

      public boolean isId()
      Determine whether this node has the is-id property
      Specified by:
      isId in interface NodeInfo
      Overrides:
      isId in class TinyNodeImpl
      Returns:
      true if the node is an ID
    • isIdref

      public boolean isIdref()
      Determine whether this node has the is-idref property
      Specified by:
      isIdref in interface NodeInfo
      Overrides:
      isIdref in class TinyNodeImpl
      Returns:
      true if the node is an IDREF or IDREFS element or attribute