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.
Attr
.CDATASection
.Comment
.DocumentFragment
.Document
.DocumentType
.Element
.Entity
.EntityReference
.Notation
.ProcessingInstruction
.Text
node.newChild
to the end of the list of children
of this node. If the newChild
is already in the tree, it
is first removed.parentNode
is null
) and no user data. User
data associated to the imported node is not carried over. However, if
any UserDataHandlers
has been specified along with the
associated data these handlers will be called with the appropriate
parameters before this method returns.
Element
copies all attributes and their
values, including those generated by the XML processor to represent
defaulted attributes, but this method does not copy any children it
contains unless it is a deep clone. This includes text contained in
an the Element
since the text is contained in a child
Text
node. Cloning an Attr
directly, as
opposed to be cloned as part of an Element
cloning
operation, returns a specified attribute (specified
is
true
). Cloning an Attr
always clones its
children, since they represent its value, no matter whether this is a
deep clone or not. Cloning an EntityReference
automatically constructs its subtree if a corresponding
Entity
is available, no matter whether this is a deep
clone or not. Cloning any other type of node simply returns a copy of
this node.
EntityReference
clone are readonly
. In addition, clones of unspecified Attr
nodes are
specified. And, cloning Document
,
DocumentType
, Entity
, and
Notation
nodes is implementation dependent.NamedNodeMap
containing the attributes of this node (if
it is an Element
) or null
otherwise.null
if the
implementation wasn't able to obtain an absolute URI. This value is
computed as described in . However, when the Document
supports the feature "HTML" [DOM Level 2 HTML]
, the base URI is computed using first the value of the href
attribute of the HTML BASE element if any, and the value of the
documentURI
attribute from the Document
interface otherwise.NodeList
that contains all children of this node. If
there are no children, this is a NodeList
containing no
nodes.Node
interface.null
.null
.ELEMENT_NODE
and
ATTRIBUTE_NODE
and nodes created with a DOM Level 1
method, such as Document.createElement()
, this is always
null
.null
if it is
unspecified (see ).
ELEMENT_NODE
and
ATTRIBUTE_NODE
and nodes created with a DOM Level 1
method, such as Document.createElement()
, this is always
null
.
Note: Per the Namespaces in XML Specification [XML Namespaces] an attribute does not inherit its namespace from the element it is attached to. If an attribute is not explicitly given a namespace, it simply has no namespace.
null
.null
, setting it has no effect,
including if the node is read-only.Document
object associated with this node. This is
also the Document
object used to create new nodes. When
this node is a Document
or a DocumentType
which is not used with any Document
yet, this is
null
.Attr
,
Document
, DocumentFragment
,
Entity
, and Notation
may have a parent.
However, if a node has just been created and not yet added to the
tree, or if it has been removed from the tree, this is
null
.null
if it is
unspecified. When it is defined to be null
, setting it
has no effect, including if the node is read-only.
nodeName
attribute, which holds the qualified name, as
well as the tagName
and name
attributes of
the Element
and Attr
interfaces, when
applicable.
null
makes it unspecified,
setting it to an empty string is implementation dependent.
namespaceURI
and localName
do not change.
ELEMENT_NODE
and
ATTRIBUTE_NODE
and nodes created with a DOM Level 1
method, such as createElement
from the
Document
interface, this is always null
.null
.null
, setting it
has no effect. On setting, any possible children this node may have
are removed and, if it the new string is not empty or
null
, replaced by a single Text
node
containing the string this attribute is set to.
Text.isElementContentWhitespace
). Similarly, on setting,
no parsing is performed either, the input string is taken as pure
textual content.
Node type | Content |
---|---|
ELEMENT_NODE, ATTRIBUTE_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, DOCUMENT_FRAGMENT_NODE | concatenation of the textContent
attribute value of every child node, excluding COMMENT_NODE and
PROCESSING_INSTRUCTION_NODE nodes. This is the empty string if the
node has no children. |
TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE | nodeValue |
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE | null |
setUserData
with the same key.newChild
before the existing child node
refChild
. If refChild
is null
,
insert newChild
at the end of the list of children.
newChild
is a DocumentFragment
object,
all of its children are inserted, in the same order, before
refChild
. If the newChild
is already in the
tree, it is first removed.
Note: Inserting a node before itself is implementation dependent.
namespaceURI
is the
default namespace or not.Node.isSameNode()
. All nodes that are the
same will also be equal, though the reverse may not be true.
nodeName
, localName
,
namespaceURI
, prefix
, nodeValue
. This is: they are both null
, or they have the same
length and are character for character identical.
attributes
NamedNodeMaps
are equal. This
is: they are both null
, or they have the same length and
for each node that exists in one map there is a node that exists in
the other map and is equal, although not necessarily at the same
index.
childNodes
NodeLists
are equal.
This is: they are both null
, or they have the same
length and contain equal nodes at the same index. Note that
normalization can affect equality; to avoid this, nodes should be
normalized before being compared.
DocumentType
nodes to be equal, the following
conditions must also be satisfied:
publicId
, systemId
,
internalSubset
.
entities
NamedNodeMaps
are equal.
notations
NamedNodeMaps
are equal.
ownerDocument
, baseURI
, and
parentNode
attributes, the specified
attribute for Attr
nodes, the schemaTypeInfo
attribute for Attr
and Element
nodes, the
Text.isElementContentWhitespace
attribute for
Text
nodes, as well as any user data or event listeners
registered on the nodes.
Note: As a general rule, anything not mentioned in the description above is not significant in consideration of equality checking. Note that future versions of this specification may take into account more attributes and implementations conform to this specification are expected to be updated accordingly.
Node
references returned by the implementation reference
the same object. When two Node
references are references
to the same object, even if through a proxy, the references may be
used completely interchangeably, such that all attributes have the
same values and calling the same DOM method on either reference
always has exactly the same effect.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. This can
be used to ensure that the DOM view of a document is the same as if
it were saved and re-loaded, and is useful when operations (such as
XPointer [XPointer]
lookups) that depend on a particular document tree structure are to
be used. If the parameter "normalize-characters" of the
DOMConfiguration
object attached to the
Node.ownerDocument
is true
, this method
will also fully normalize the characters of the Text
nodes.
Note: In cases where the document contains
CDATASections
, the normalize operation alone may not be
sufficient, since XPointers do not differentiate between
Text
nodes and CDATASection
nodes.
oldChild
from the list
of children, and returns it.oldChild
with newChild
in the list of children, and returns the oldChild
node.
newChild
is a DocumentFragment
object,
oldChild
is replaced by all of the
DocumentFragment
children, which are inserted in the
same order. If the newChild
is already in the tree, it
is first removed.
Note: Replacing a node with itself is implementation dependent.
null
, setting it has no effect,
including if the node is read-only.null
if it is
unspecified. When it is defined to be null
, setting it
has no effect, including if the node is read-only.
nodeName
attribute, which holds the qualified name, as
well as the tagName
and name
attributes of
the Element
and Attr
interfaces, when
applicable.
null
makes it unspecified,
setting it to an empty string is implementation dependent.
namespaceURI
and localName
do not change.
ELEMENT_NODE
and
ATTRIBUTE_NODE
and nodes created with a DOM Level 1
method, such as createElement
from the
Document
interface, this is always null
.null
, setting it
has no effect. On setting, any possible children this node may have
are removed and, if it the new string is not empty or
null
, replaced by a single Text
node
containing the string this attribute is set to.
Text.isElementContentWhitespace
). Similarly, on setting,
no parsing is performed either, the input string is taken as pure
textual content.
Node type | Content |
---|---|
ELEMENT_NODE, ATTRIBUTE_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, DOCUMENT_FRAGMENT_NODE | concatenation of the textContent
attribute value of every child node, excluding COMMENT_NODE and
PROCESSING_INSTRUCTION_NODE nodes. This is the empty string if the
node has no children. |
TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE | nodeValue |
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE | null |
getUserData
with the
same key.