org.apache.xerces.dom

## Class DeferredAttrImpl

- java.lang.Object
- - org.apache.xerces.dom.NodeImpl
  - - org.apache.xerces.dom.AttrImpl
    - - org.apache.xerces.dom.DeferredAttrImpl

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, DeferredNode, org.w3c.dom.Attr, org.w3c.dom.events.EventTarget, org.w3c.dom.Node, org.w3c.dom.NodeList, org.w3c.dom.TypeInfo

      public final class DeferredAttrImpl
      extends AttrImpl
      implements DeferredNode

  Attribute represents an XML-style attribute of an Element. Typically, the allowable values are controlled by its declaration in the Document Type Definition (DTD) governing this kind of document.

  If the attribute has not been explicitly assigned a value, but has been declared in the DTD, it will exist and have that default. Only if neither the document nor the DTD specifies a value will the Attribute really be considered absent and have no value; in that case, querying the attribute will return null.

  Attributes may have multiple children that contain their data. (XML allows attributes to contain entity references, and tokenized attribute types such as NMTOKENS may have a child for each token.) For convenience, the Attribute object's getValue() method returns the string version of the attribute's value.

  Attributes are not children of the Elements they belong to, in the usual sense, and have no valid Parent reference. However, the spec says they _do_ belong to a specific Element, and an INUSE exception is to be thrown if the user attempts to explicitly share them between elements.

  Note that Elements do not permit attributes to appear to be shared (see the INUSE exception), so this object's mutability is officially not an issue.

  DeferredAttrImpl inherits from AttrImpl which does not support Namespaces. DeferredAttrNSImpl, which inherits from AttrNSImpl, does.

  Since:
    PR-DOM-Level-1-19980818.
  Version:
    $Id: DeferredAttrImpl.java 447266 2006-09-18 05:57:49Z mrglavas $
  Author:
    Andy Clark, IBM, Arnaud Le Hors, IBM
  See Also:
    `DeferredAttrNSImpl`, Serialized Form

  # INTERNAL:

    Usage of this class is not supported. It may be altered or removed at any time.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `fNodeIndex` Node index.

    - ### Fields inherited from class org.apache.xerces.dom.AttrImpl

      `name, value`

    - ### Fields inherited from class org.apache.xerces.dom.NodeImpl

      `DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_IS_CONTAINED, DOCUMENT_POSITION_PRECEDING, ELEMENT_DEFINITION_NODE, FIRSTCHILD, flags, HASSTRING, ID, IGNORABLEWS, NORMALIZED, OWNED, ownerNode, READONLY, SPECIFIED, SYNCCHILDREN, SYNCDATA, TREE_POSITION_ANCESTOR, TREE_POSITION_DESCENDANT, TREE_POSITION_DISCONNECTED, TREE_POSITION_EQUIVALENT, TREE_POSITION_FOLLOWING, TREE_POSITION_PRECEDING, TREE_POSITION_SAME_NODE`

    - ### Fields inherited from interface org.apache.xerces.dom.DeferredNode

      `TYPE_NODE`

    - ### Fields inherited from interface org.w3c.dom.Node

      `ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

    - ### Fields inherited from interface org.w3c.dom.TypeInfo

      `DERIVATION_EXTENSION, DERIVATION_LIST, DERIVATION_RESTRICTION, DERIVATION_UNION`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getNodeIndex()` Returns the node index.
    `protected void` | `synchronizeChildren()` Synchronizes the node's children with the internal structure.
    `protected void` | `synchronizeData()` Synchronizes the data (name and value) for fast nodes.

    - ### Methods inherited from class org.apache.xerces.dom.AttrImpl

      `cloneNode, getChildNodes, getElement, getFirstChild, getLastChild, getLength, getName, getNodeName, getNodeType, getNodeValue, getOwnerElement, getSchemaTypeInfo, getSpecified, getTypeName, getTypeNamespace, getValue, hasChildNodes, insertBefore, isDerivedFrom, isEqualNode, isId, item, makeChildNode, normalize, removeChild, replaceChild, setIdAttribute, setNodeValue, setOwnerDocument, setReadOnly, setSpecified, setType, setValue, toString`

    - ### Methods inherited from class org.apache.xerces.dom.NodeImpl

      `addEventListener, appendChild, changed, changes, compareDocumentPosition, compareTreePosition, dispatchEvent, getAttributes, getBaseURI, getContainer, getFeature, getLocalName, getNamespaceURI, getNextSibling, getNodeNumber, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getReadOnly, getTextContent, getUserData, getUserData, getUserDataRecord, hasAttributes, isDefaultNamespace, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, needsSyncChildren, removeEventListener, setPrefix, setTextContent, setUserData, setUserData`

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.w3c.dom.Node

      `appendChild, cloneNode, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData`

- - ### Field Detail

    - #### fNodeIndex

          protected transient int fNodeIndex

      Node index.

  - ### Method Detail

    - #### getNodeIndex

          public int getNodeIndex()

      Returns the node index.
      Specified by:
        `getNodeIndex` in interface `DeferredNode`

    - #### synchronizeData

          protected void synchronizeData()

      Synchronizes the data (name and value) for fast nodes.
      Overrides:
        `synchronizeData` in class `NodeImpl`

    - #### synchronizeChildren

          protected void synchronizeChildren()

      Synchronizes the node's children with the internal structure. Fluffing the children at once solves a lot of work to keep the two structures in sync. The problem gets worse when editing the tree -- this makes it a lot easier.
      Overrides:
        `synchronizeChildren` in class `AttrImpl`

Copyright © 1999-2022 The Apache Software Foundation. All Rights Reserved.