Document interface represents the entire HTML or XML
document. Conceptually, it is the root of the document tree, and provides
the primary access to the document's data.
Since elements, text nodes, comments, processing instructions, etc.
cannot exist outside the context of a Document, the
Document interface also contains the factory methods needed
to create these objects. The Node objects created have a
ownerDocument attribute which associates them with the
Document within whose context they were created.
See also the Document Object Model (DOM) Level 3 Core Specification.
Attr.CDATASection.Comment.DocumentFragment.Document.DocumentType.Element.Entity.EntityReference.Notation.ProcessingInstruction.Text node.ownerDocument of the source
node, its children, as well as the attached attribute nodes if there
are any. If the source node has a parent it is first removed from the
child list of its parent. This effectively allows moving a subtree
from one document to another (unlike importNode() which
create a copy of the source node instead of moving it). When it
fails, applications should use Document.importNode()
instead. Note that if the adopted node is already part of this
document (i.e. the source and target document are the same), this
method still has the effect of removing the source node from the
child list of its parent, if any. The following list describes the
specifics for each type of node.
ownerElement attribute is set to null and
the specified flag is set to true on the
adopted Attr. The descendants of the source
Attr are recursively adopted.Document nodes cannot be adopted.DocumentType nodes cannot be adopted.Entity nodes cannot be adopted.EntityReference node itself is adopted, the
descendants are discarded, since the source and destination documents
might have defined the entity differently. If the document being
imported into provides a definition for this entity name, its value
is assigned.Notation nodes cannot be
adopted.Note: Since it does not create new nodes unlike the
Document.importNode() method, this method does not raise
an INVALID_CHARACTER_ERR exception, and applications
should use the Document.normalizeDocument() method to
check if an imported name is not an XML name according to the XML
version in use.
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.Attr of the given name. Note that the
Attr instance can then be set on an Element
using the setAttributeNode method.
createAttributeNS method.null as the
namespaceURI parameter for methods if they wish to have
no namespace.CDATASection node whose value is the specified
string.Comment node given the specified string.DocumentFragment object.Element interface, so attributes
can be specified directly on the returned object.
Attr nodes representing them are automatically created
and attached to the element.
createElementNS method.null as the
namespaceURI parameter for methods if they wish to have no namespace.EntityReference object. In addition, if the
referenced entity is known, the child list of the
EntityReference node is made the same as that of the
corresponding Entity node.
Note: If any descendant of the Entity node has
an unbound namespace prefix, the corresponding descendant of the
created EntityReference node is also unbound; (its
namespaceURI is null). The DOM Level 2 and
3 do not support any mechanism to resolve namespace prefixes in this
case.
ProcessingInstruction node given the specified
name and data strings.Text node given the specified string.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.DocumentType)
associated with this document. For XML documents without a document
type declaration this returns null. For HTML documents,
a DocumentType object may be returned, independently of
the presence or absence of document type declaration in the HTML
document.
DocumentType node,
child node of this Document. This node can be set at
document creation time and later changed through the use of child
nodes manipulation methods, such as Node.insertBefore,
or Node.replaceChild. Note, however, that while some
implementations may instantiate different types of
Document objects supporting additional features than the
"Core", such as "HTML" [DOM Level 2 HTML]
, based on the DocumentType specified at creation time,
changing it afterwards is very unlikely to result in a change of the
features supported.null if undefined or if
the Document was created using
DOMImplementation.createDocument. No lexical checking is
performed when setting this attribute; this could result in a
null value returned when using Node.baseURI
.
Document supports the feature
"HTML" [DOM Level 2 HTML]
, the href attribute of the HTML BASE element takes precedence over
this attribute when computing Node.baseURI.Document.normalizeDocument()
is invoked.Element that has an ID attribute with the
given value. If no such element exists, this returns null
. If more than one element has an ID attribute with that value, what
is returned is undefined.
Attr.isId to determine if an attribute is of type ID.
Note: Attributes with the name "ID" or "id" are not of type ID unless so defined.
NodeList of all the Elements in
document order with a given tag name and are contained in the
document.NodeList of all the Elements with a
given local name and namespace URI in document order.Node
interface.null.DOMImplementation object that handles this document. A
DOM application may use objects from multiple implementations.null when it is not known, such
as when the Document was created in memory.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.false, the implementation is free to not test
every possible error case normally defined on DOM operations, and not
raise any DOMException on DOM operations or report
errors while using Document.normalizeDocument(). In case
of error, the behavior is undefined. This attribute is
true by default.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.null when
unspecified or when it is not known, such as when the
Document was created in memory.false when
unspecified.
Note: No verification is done on the value when setting
this attribute. Applications should use
Document.normalizeDocument() with the "validate"
parameter to verify if the value matches the validity
constraint for standalone document declaration as defined in [XML 1.0].
"1.0". If this document does not support the "XML"
feature, the value is always null. Changing this
attribute will affect methods that check for invalid characters in
XML names. Application should invoke
Document.normalizeDocument() in order to check for
invalid characters in the Nodes that are already part of
this Document.
DOMImplementation.hasFeature(feature, version) method
with parameter values "XMLVersion" and "1.0" (respectively) to
determine if an implementation supports [XML 1.0]. DOM
applications may use the same method with parameter values
"XMLVersion" and "1.1" (respectively) to determine if an
implementation supports [XML 1.1]. In both
cases, in order to support XML, an implementation must also support
the "XML" feature defined in this specification. Document
objects supporting a version of the "XMLVersion" feature must not
raise a NOT_SUPPORTED_ERR exception for the same version
number when using Document.xmlVersion.parentNode is null).
nodeName and nodeType, plus the
attributes related to namespaces (prefix,
localName, and namespaceURI). As in the
cloneNode operation, the source node is not altered.
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.
nodeType, attempting to mirror the behavior expected if
a fragment of XML or HTML source was copied from one document to
another, recognizing that the two documents may have different DTDs
in the XML case. The following list describes the specifics for each
type of node.
ownerElement attribute
is set to null and the specified flag is
set to true on the generated Attr. The
descendants of the source Attr are recursively imported
and the resulting nodes reassembled to form the corresponding subtree.
Note that the deep parameter has no effect on
Attr nodes; they always carry their children with them
when imported.deep option
was set to true, the descendants of the source
DocumentFragment are recursively imported and the
resulting nodes reassembled under the imported
DocumentFragment to form the corresponding subtree.
Otherwise, this simply generates an empty
DocumentFragment.Document
nodes cannot be imported.DocumentType
nodes cannot be imported.Attr nodes are attached to the generated
Element. Default attributes are not copied, though if the document being imported into defines default
attributes for this element name, those are assigned. If the
importNode deep parameter was set to
true, the descendants of the source element are
recursively imported and the resulting nodes reassembled to form the
corresponding subtree.Entity nodes can be
imported, however in the current release of the DOM the
DocumentType is readonly. Ability to add these imported
nodes to a DocumentType will be considered for addition
to a future release of the DOM.On import, the publicId,
systemId, and notationName attributes are
copied. If a deep import is requested, the descendants
of the the source Entity are recursively imported and
the resulting nodes reassembled to form the corresponding subtree.EntityReference itself is
copied, even if a deep import is requested, since the
source and destination documents might have defined the entity
differently. If the document being imported into provides a
definition for this entity name, its value is assigned.Notation nodes can be imported, however in the current
release of the DOM the DocumentType is readonly. Ability
to add these imported nodes to a DocumentType will be
considered for addition to a future release of the DOM.On import, the
publicId and systemId attributes are copied.
Note that the deep parameter has no effect on this type
of nodes since they cannot have any children.target and data values from those of the
source node.Note that the deep parameter has no effect
on this type of nodes since they cannot have any children.CharacterData copy their data and
length attributes from those of the source node.Note
that the deep parameter has no effect on these types of
nodes since they cannot have any children.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.
EntityReference nodes and normalizes Text
nodes, as defined in the method Node.normalize().
Document.domConfig object and governing what
operations actually take place. Noticeably this method could also
make the document namespace well-formed according to the algorithm
described in , check the character normalization, remove the
CDATASection nodes, etc. See
DOMConfiguration for details.
// Keep in the document
the information defined // in the XML Information Set (Java example)
DOMConfiguration docConfig = myDocument.getDomConfig();
docConfig.setParameter("infoset", Boolean.TRUE);
myDocument.normalizeDocument();
Node.nodeName
contains an invalid character according to the XML version in use,
errors or warnings (DOMError.SEVERITY_ERROR or
DOMError.SEVERITY_WARNING) will be reported using the
DOMErrorHandler object associated with the "error-handler
" parameter. Note this method might also report fatal errors (
DOMError.SEVERITY_FATAL_ERROR) if an implementation
cannot recover from an error.oldChild from the list
of children, and returns it.ELEMENT_NODE or
ATTRIBUTE_NODE.
Element its
attributes are moved to the new node, the new node is inserted at the
position the old node used to have in its parent's child nodes list
if it has one, the user data that was attached to the old node is
attached to the new node.
Element only the
specified attributes are moved, default attributes originated from
the DTD are updated according to the new element name. In addition,
the implementation may update default attributes from other schemas.
Applications should use Document.normalizeDocument() to
guarantee these attributes are up-to-date.
Attr that is
attached to an Element, the node is first removed from
the Element attributes map. Then, once renamed, either
by modifying the existing node or creating a new one as described
above, it is put back.
NODE_RENAMED is fired,
http://www.w3.org/2001/xml-events,
DOMElementNameChanged} or {
http://www.w3.org/2001/xml-events,
DOMAttributeNameChanged} is fired.
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 if undefined or if
the Document was created using
DOMImplementation.createDocument. No lexical checking is
performed when setting this attribute; this could result in a
null value returned when using Node.baseURI
.
Document supports the feature
"HTML" [DOM Level 2 HTML]
, the href attribute of the HTML BASE element takes precedence over
this attribute when computing Node.baseURI.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.false, the implementation is free to not test
every possible error case normally defined on DOM operations, and not
raise any DOMException on DOM operations or report
errors while using Document.normalizeDocument(). In case
of error, the behavior is undefined. This attribute is
true by default.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.false when
unspecified.
Note: No verification is done on the value when setting
this attribute. Applications should use
Document.normalizeDocument() with the "validate"
parameter to verify if the value matches the validity
constraint for standalone document declaration as defined in [XML 1.0].
"1.0". If this document does not support the "XML"
feature, the value is always null. Changing this
attribute will affect methods that check for invalid characters in
XML names. Application should invoke
Document.normalizeDocument() in order to check for
invalid characters in the Nodes that are already part of
this Document.
DOMImplementation.hasFeature(feature, version) method
with parameter values "XMLVersion" and "1.0" (respectively) to
determine if an implementation supports [XML 1.0]. DOM
applications may use the same method with parameter values
"XMLVersion" and "1.1" (respectively) to determine if an
implementation supports [XML 1.1]. In both
cases, in order to support XML, an implementation must also support
the "XML" feature defined in this specification. Document
objects supporting a version of the "XMLVersion" feature must not
raise a NOT_SUPPORTED_ERR exception for the same version
number when using Document.xmlVersion.