Package net.sf.saxon.tree.tiny

## Class TinyElementImpl

- java.lang.Object
- - net.sf.saxon.tree.tiny.TinyNodeImpl
  - - net.sf.saxon.tree.tiny.TinyParentNodeImpl
    - - net.sf.saxon.tree.tiny.TinyElementImpl

- All Implemented Interfaces:
    `javax.xml.transform.Source`, `javax.xml.transform.SourceLocator`, `GroundedValue`, `Item`, `NodeInfo`, `Sequence`, `Location`, `org.xml.sax.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.

- - ### Field Summary

    - ### Fields inherited from class net.sf.saxon.tree.tiny.TinyNodeImpl

      `NODE_LETTER, nodeNr, parent, tree`

    - ### Fields inherited from interface net.sf.saxon.om.NodeInfo

      `IS_DTD_TYPE, IS_NILLED`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `TinyElementImpl​(TinyTree tree, int nodeNr)` | Constructor - create a tiny element node

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `AtomicSequence` | `atomize()` | Get the typed value.
    `protected void` | `checkNotNamespaceSensitiveElement​(SchemaType type, int nodeNr)` | Check whether the content of an element is namespace-sensitive
    `void` | `copy​(Receiver receiver, int copyOptions, Location location)` | Copy this node to a given receiver
    `NamespaceMap` | `getAllNamespaces()` | Get all the namespace bindings that are in-scope for this element.
    `java.lang.String` | `getAttributeValue​(int fp)` | Get the value of the attribute with a given fingerprint.
    `java.lang.String` | `getAttributeValue​(java.lang.String uri, java.lang.String local)` | Get the string value of a given attribute of this node
    `java.lang.String` | `getBaseURI()` | Get the base URI of this element node.
    `NamespaceBinding[]` | `getDeclaredNamespaces​(NamespaceBinding[] buffer)` | Get all namespace undeclarations and undeclarations defined on this element.
    `int` | `getNodeKind()` | Return the type of node.
    `SchemaType` | `getSchemaType()` | Get the type annotation of this node, if any.
    `java.lang.String` | `getURIForPrefix​(java.lang.String prefix, boolean useDefault)` | Get the namespace URI corresponding to a given prefix.
    `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.
    `boolean` | `isId()` | Determine whether this node has the is-id property
    `boolean` | `isIdref()` | Determine whether this node has the is-idref property

    - ### Methods inherited from class net.sf.saxon.tree.tiny.TinyParentNodeImpl

      `getStringValue, getStringValueCS, getStringValueCS, hasChildNodes`

    - ### Methods inherited from class net.sf.saxon.tree.tiny.TinyNodeImpl

      `compareOrder, equals, generateId, getColumnNumber, getConfiguration, getDisplayName, getFingerprint, getGenre, getLineNumber, getLocalPart, getNamePool, getNodeNumber, getParent, getPrefix, getRoot, getSequenceNumber, getSystemId, getTree, getTreeInfo, getURI, hasFingerprint, hashCode, head, isAncestorOrSelf, isNilled, isSameNodeInfo, isStreamed, iterateAxis, iterateAxis, saveLocation, setParentNode, setSystemId`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface net.sf.saxon.om.GroundedValue

      `asIterable, concatenate, containsNode, effectiveBooleanValue, materialize`

    - ### Methods inherited from interface net.sf.saxon.om.Item

      `getLength, itemAt, iterate, reduce, subsequence`

    - ### Methods inherited from interface net.sf.saxon.om.NodeInfo

      `attributes, children, children, getPublicId, toShortString`

    - ### Methods inherited from interface net.sf.saxon.om.Sequence

      `makeRepeatable`

    - ### Methods inherited from interface javax.xml.transform.Source

      `isEmpty`

- - ### Constructor Detail

    - #### 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 Detail

    - #### getNodeKind

          public final int getNodeKind()

      Return the type of node.
      Returns:
        Type.ELEMENT
      See Also:
        `Type`

    - #### getBaseURI

          public java.lang.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 java.lang.String getAttributeValue​(java.lang.String uri,
                                                    java.lang.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 java.lang.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 the node number of the elemente
      Throws:
        `XPathException` - if an error occurs

    - #### getURIForPrefix

          public java.lang.String getURIForPrefix​(java.lang.String prefix,
                                                  boolean useDefault)

      Get the namespace URI corresponding to a given prefix. Return null if the prefix is not in scope.
      Parameters:
        `prefix` - the namespace prefix. May be the zero-length string, indicating that there is no prefix. This indicates either the default namespace or the null namespace, depending on the value of useDefault.
        `useDefault` - true if the default namespace is to be used when the prefix is "". If false, the method returns "" when the prefix is "".
      Returns:
        the uri for the namespace, or null if the prefix is not in scope. The "null namespace" is represented by the pseudo-URI "".

    - #### 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