# Interface DocumentFragment

All Superinterfaces:
  `Node`

public interface DocumentFragment extends Node
`DocumentFragment` is a "lightweight" or "minimal" `Document` object. It is very common to want to be able to extract a portion of a document's tree or to create a new fragment of a document. Imagine implementing a user command like cut or rearranging a document by moving fragments around. It is desirable to have an object which can hold such fragments and it is quite natural to use a Node for this purpose. While it is true that a `Document` object could fulfill this role, a `Document` object can potentially be a heavyweight object, depending on the underlying implementation. What is really needed for this is a very lightweight object. `DocumentFragment` is such an object.

Furthermore, various operations -- such as inserting nodes as children of another `Node` -- may take `DocumentFragment` objects as arguments; this results in all the child nodes of the `DocumentFragment` being moved to the child list of this node.

The children of a `DocumentFragment` node are zero or more nodes representing the tops of any sub-trees defining the structure of the document. `DocumentFragment` nodes do not need to be well-formed XML documents (although they do need to follow the rules imposed upon well-formed XML parsed entities, which can have multiple top nodes). For example, a `DocumentFragment` might have only one child and that child node could be a `Text` node. Such a structure model represents neither an HTML document nor a well-formed XML document.

When a `DocumentFragment` is inserted into a `Document` (or indeed any other `Node` that may take children) the children of the `DocumentFragment` and not the `DocumentFragment` itself are inserted into the `Node`. This makes the `DocumentFragment` very useful when the user wishes to create nodes that are siblings; the `DocumentFragment` acts as the parent of these nodes so that the user can use the standard methods from the `Node` interface, such as `Node.insertBefore` and `Node.appendChild`.

See also the Document Object Model (DOM) Level 3 Core Specification.

Since:
  1.4, DOM Level 2

## Field Summary

### Fields declared in interface 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`
Modifier and Type
Field
Description
`static final short`
`ATTRIBUTE_NODE`
The node is an `Attr`.
`static final short`
`CDATA_SECTION_NODE`
The node is a `CDATASection`.
`static final short`
`COMMENT_NODE`
The node is a `Comment`.
`static final short`
`DOCUMENT_FRAGMENT_NODE`
The node is a `DocumentFragment`.
`static final short`
`DOCUMENT_NODE`
The node is a `Document`.
`static final short`
`DOCUMENT_POSITION_CONTAINED_BY`
The node is contained by the reference node.
`static final short`
`DOCUMENT_POSITION_CONTAINS`
The node contains the reference node.
`static final short`
`DOCUMENT_POSITION_DISCONNECTED`
The two nodes are disconnected.
`static final short`
`DOCUMENT_POSITION_FOLLOWING`
The node follows the reference node.
`static final short`
`DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC`
The determination of preceding versus following is implementation-specific.
`static final short`
`DOCUMENT_POSITION_PRECEDING`
The second node precedes the reference node.
`static final short`
`DOCUMENT_TYPE_NODE`
The node is a `DocumentType`.
`static final short`
`ELEMENT_NODE`
The node is an `Element`.
`static final short`
`ENTITY_NODE`
The node is an `Entity`.
`static final short`
`ENTITY_REFERENCE_NODE`
The node is an `EntityReference`.
`static final short`
`NOTATION_NODE`
The node is a `Notation`.
`static final short`
`PROCESSING_INSTRUCTION_NODE`
The node is a `ProcessingInstruction`.
`static final short`
`TEXT_NODE`
The node is a `Text` node.

## Method Summary

### Methods declared in interface 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`
Modifier and Type
Method
Description
`Node`
`appendChild(Node newChild)`
Adds the node `newChild` to the end of the list of children of this node.
`Node`
`cloneNode(boolean deep)`
Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.
`short`
`compareDocumentPosition(Node other)`
Compares the reference node, i.e. the node on which this method is being called, with a node, i.e. the one passed as a parameter, with regard to their position in the document and according to the document order.
`NamedNodeMap`
`getAttributes()`
A `NamedNodeMap` containing the attributes of this node (if it is an `Element`) or `null` otherwise.
`String`
`getBaseURI()`
The absolute base URI of this node or `null` if the implementation wasn't able to obtain an absolute URI.
`NodeList`
`getChildNodes()`
A `NodeList` that contains all children of this node.
`Object`
`getFeature(String feature, String version)`
This method returns a specialized object which implements the specialized APIs of the specified feature and version, as specified in .
`Node`
`getFirstChild()`
The first child of this node.
`Node`
`getLastChild()`
The last child of this node.
`String`
`getLocalName()`
Returns the local part of the qualified name of this node.
`String`
`getNamespaceURI()`
The namespace URI of this node, or `null` if it is unspecified (see ).
`Node`
`getNextSibling()`
The node immediately following this node.
`String`
`getNodeName()`
The name of this node, depending on its type; see the table above.
`short`
`getNodeType()`
A code representing the type of the underlying object, as defined above.
`String`
`getNodeValue()`
The value of this node, depending on its type; see the table above.
`Document`
`getOwnerDocument()`
The `Document` object associated with this node.
`Node`
`getParentNode()`
The parent of this node.
`String`
`getPrefix()`
The namespace prefix of this node, or `null` if it is unspecified.
`Node`
`getPreviousSibling()`
The node immediately preceding this node.
`String`
`getTextContent()`
This attribute returns the text content of this node and its descendants.
`Object`
`getUserData(String key)`
Retrieves the object associated to a key on a this node.
`boolean`
`hasAttributes()`
Returns whether this node (if it is an element) has any attributes.
`boolean`
`hasChildNodes()`
Returns whether this node has any children.
`Node`
`insertBefore(Node newChild, Node refChild)`
Inserts the node `newChild` before the existing child node `refChild`.
`boolean`
`isDefaultNamespace(String namespaceURI)`
This method checks if the specified `namespaceURI` is the default namespace or not.
`boolean`
`isEqualNode(Node arg)`
Tests whether two nodes are equal.
`boolean`
`isSameNode(Node other)`
Returns whether this node is the same node as the given one.
`boolean`
`isSupported(String feature, String version)`
Tests whether the DOM implementation implements a specific feature and that feature is supported by this node, as specified in .
`String`
`lookupNamespaceURI(String prefix)`
Look up the namespace URI associated to the given prefix, starting from this node.
`String`
`lookupPrefix(String namespaceURI)`
Look up the prefix associated to the given namespace URI, starting from this node.
`void`
`normalize()`
Puts all `Text` nodes in the full depth of the sub-tree underneath this `Node`, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separates `Text` nodes, i.e., there are neither adjacent `Text` nodes nor empty `Text` nodes.
`Node`
`removeChild(Node oldChild)`
Removes the child node indicated by `oldChild` from the list of children, and returns it.
`Node`
`replaceChild(Node newChild, Node oldChild)`
Replaces the child node `oldChild` with `newChild` in the list of children, and returns the `oldChild` node.
`void`
`setNodeValue(String nodeValue)`
The value of this node, depending on its type; see the table above.
`void`
`setPrefix(String prefix)`
The namespace prefix of this node, or `null` if it is unspecified.
`void`
`setTextContent(String textContent)`
This attribute returns the text content of this node and its descendants.
`Object`
`setUserData(String key, Object data, UserDataHandler handler)`
Associate an object to a key on this node.