Class 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.

    • 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