org.w3c.dom.Node Maven / Gradle / Ivy
/*
* Copyright (C) 2005 by Quentin Anciaux
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Library General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
* for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; if not, write to the Free Software Foundation,
* Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* @author Quentin Anciaux
*/
package org.w3c.dom;
/**
* The Node
interface is the primary datatype for the entire
* Document Object Model. It represents a single node in the document tree.
* While all objects implementing the Node
interface expose
* methods for dealing with children, not all objects implementing the
* Node
interface may have children. For example,
* Text
nodes may not have children, and adding children to such
* nodes results in a DOMException
being raised.
*
*
* The attributes nodeName
,nodeValue
and
* attributes
are included as a mechanism to get at node
* information without casting down to the specific derived interface. In
* cases where there is no obvious mapping of these attributes for a specific
* nodeType
(e.g., nodeValue
for an
* Element
or attributes
for a
* Comment
), this returns null
. Note that the
* specialized interfaces may contain additional and more convenient
* mechanisms to get and set the relevant information.
*
*
*
* The values of nodeName
,nodeValue
, and
* attributes
vary according to the node type as follows:
*
*
*
* See also the Document
* Object Model (DOM) Level 3 Core Specification .
*
*/
public interface Node {
// NodeType
/** The node is an Element
. */
public static final short ELEMENT_NODE = 1;
/** The node is an Attr
. */
public static final short ATTRIBUTE_NODE = 2;
/** The node is a Text
node. */
public static final short TEXT_NODE = 3;
/** The node is a CDATASection
. */
public static final short CDATA_SECTION_NODE = 4;
/** The node is an EntityReference
. */
public static final short ENTITY_REFERENCE_NODE = 5;
/** The node is an Entity
. */
public static final short ENTITY_NODE = 6;
/** The node is a ProcessingInstruction
. */
public static final short PROCESSING_INSTRUCTION_NODE = 7;
/** The node is a Comment
. */
public static final short COMMENT_NODE = 8;
/** The node is a Document
. */
public static final short DOCUMENT_NODE = 9;
/** The node is a DocumentType
. */
public static final short DOCUMENT_TYPE_NODE = 10;
/** The node is a DocumentFragment
. */
public static final short DOCUMENT_FRAGMENT_NODE = 11;
/** The node is a Notation
. */
public static final short NOTATION_NODE = 12;
// DocumentPosition
/**
* The two nodes are disconnected. Order between disconnected nodes is
* always implementation-specific.
*/
public static final short DOCUMENT_POSITION_DISCONNECTED = 0x01;
/** The second node precedes the reference node. */
public static final short DOCUMENT_POSITION_PRECEDING = 0x02;
/** The node follows the reference node. */
public static final short DOCUMENT_POSITION_FOLLOWING = 0x04;
/**
* The node contains the reference node. A node which contains is always
* preceding, too.
*/
public static final short DOCUMENT_POSITION_CONTAINS = 0x08;
/**
* The node is contained by the reference node. A node which is contained
* is always following, too.
*/
public static final short DOCUMENT_POSITION_CONTAINED_BY = 0x10;
/**
* The determination of preceding versus following is
* implementation-specific.
*/
public static final short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
/**
* The name of this node, depending on its type; see the table above.
*
* @return DOCUMENT ME!
*/
public String getNodeName();
/**
* The value of this node, depending on its type; see the table above. When
* it is defined to be null
, setting it has no effect,
* including if the node is read-only.
*
* @return DOCUMENT ME!
*
* @exception DOMException DOMSTRING_SIZE_ERR: Raised when it would return
* more characters than fit in a DOMString
* variable on the implementation platform.
*/
public String getNodeValue()
throws DOMException;
/**
* The value of this node, depending on its type; see the table above. When
* it is defined to be null
, setting it has no effect,
* including if the node is read-only.
*
* @param nodeValue DOCUMENT ME!
*
* @exception DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the
* node is readonly and if it is not defined to be
* null
.
*/
public void setNodeValue(String nodeValue)
throws DOMException;
/**
* A code representing the type of the underlying object, as defined above.
*
* @return DOCUMENT ME!
*/
public short getNodeType();
/**
* The parent of this node. All nodes, except 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
.
*
* @return DOCUMENT ME!
*/
public Node getParentNode();
/**
* A NodeList
that contains all children of this node. If
* there are no children, this is a NodeList
containing no
* nodes.
*
* @return DOCUMENT ME!
*/
public NodeList getChildNodes();
/**
* The first child of this node. If there is no such node, this returns
* null
.
*
* @return DOCUMENT ME!
*/
public Node getFirstChild();
/**
* The last child of this node. If there is no such node, this returns
* null
.
*
* @return DOCUMENT ME!
*/
public Node getLastChild();
/**
* The node immediately preceding this node. If there is no such node, this
* returns null
.
*
* @return DOCUMENT ME!
*/
public Node getPreviousSibling();
/**
* The node immediately following this node. If there is no such node, this
* returns null
.
*
* @return DOCUMENT ME!
*/
public Node getNextSibling();
/**
* A NamedNodeMap
containing the attributes of this node (if
* it is an Element
) or null
otherwise.
*
* @return DOCUMENT ME!
*/
public NamedNodeMap getAttributes();
/**
* The 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
.
*
* @return DOCUMENT ME!
*/
public Document getOwnerDocument();
/**
* Inserts the node newChild
before the existing child node
* refChild
. If refChild
is null
,
* insert newChild
at the end of the list of children.
* If 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.
*
* @param newChild The node to insert.
* @param refChild The reference node, i.e., the node before which the new
* node must be inserted.
*
* @return The node being inserted.
*
* @exception DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of
* a type that does not allow children of the type of the
* newChild
node, or if the node to insert is one
* of this node's ancestors or this node itself, or if this
* node is of type Document
and the DOM
* application attempts to insert a second
* DocumentType
or Element
node.
* WRONG_DOCUMENT_ERR: Raised if newChild
was
* created from a different document than the one that created
* this node.
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly
* or if the parent of the node being inserted is readonly.
* NOT_FOUND_ERR: Raised if refChild
is not a
* child of this node.
* NOT_SUPPORTED_ERR: if this node is of type
* Document
, this exception might be raised if the
* DOM implementation doesn't support the insertion of a
* DocumentType
or Element
node.
*/
public Node insertBefore(
Node newChild,
Node refChild
)
throws DOMException;
/**
* Replaces the child node oldChild
with newChild
* in the list of children, and returns the oldChild
node.
* If 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.
*
* @param newChild The new node to put in the child list.
* @param oldChild The node being replaced in the list.
*
* @return The node replaced.
*
* @exception DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of
* a type that does not allow children of the type of the
* newChild
node, or if the node to put in is one
* of this node's ancestors or this node itself, or if this
* node is of type Document
and the result of the
* replacement operation would add a second
* DocumentType
or Element
on the
* Document
node.
* WRONG_DOCUMENT_ERR: Raised if newChild
was
* created from a different document than the one that created
* this node.
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the
* parent of the new node is readonly.
* NOT_FOUND_ERR: Raised if oldChild
is not a
* child of this node.
* NOT_SUPPORTED_ERR: if this node is of type
* Document
, this exception might be raised if the
* DOM implementation doesn't support the replacement of the
* DocumentType
child or Element
* child.
*/
public Node replaceChild(
Node newChild,
Node oldChild
)
throws DOMException;
/**
* Removes the child node indicated by oldChild
from the list
* of children, and returns it.
*
* @param oldChild The node being removed.
*
* @return The node removed.
*
* @exception DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node
* is readonly.
* NOT_FOUND_ERR: Raised if oldChild
is not a
* child of this node.
* NOT_SUPPORTED_ERR: if this node is of type
* Document
, this exception might be raised if the
* DOM implementation doesn't support the removal of the
* DocumentType
child or the Element
* child.
*/
public Node removeChild(Node oldChild)
throws DOMException;
/**
* Adds the 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.
*
* @param newChild The node to add.If it is a DocumentFragment
* object, the entire contents of the document fragment are moved
* into the child list of this node
*
* @return The node added.
*
* @exception DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of
* a type that does not allow children of the type of the
* newChild
node, or if the node to append is one
* of this node's ancestors or this node itself, or if this
* node is of type Document
and the DOM
* application attempts to append a second
* DocumentType
or Element
node.
* WRONG_DOCUMENT_ERR: Raised if newChild
was
* created from a different document than the one that created
* this node.
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly
* or if the previous parent of the node being inserted is
* readonly.
* NOT_SUPPORTED_ERR: if the newChild
node is a
* child of the Document
node, this exception
* might be raised if the DOM implementation doesn't support
* the removal of the DocumentType
child or
* Element
child.
*/
public Node appendChild(Node newChild)
throws DOMException;
/**
* Returns whether this node has any children.
*
* @return Returns true
if this node has any children,
* false
otherwise.
*/
public boolean hasChildNodes();
/**
* Returns a duplicate of this node, i.e., serves as a generic copy
* constructor for nodes. The duplicate node has no parent (
* 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.
* Cloning an 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.
* Note that cloning an immutable subtree results in a mutable copy, but
* the children of an EntityReference
clone are readonly . In
* addition, clones of unspecified Attr
nodes are specified.
* And, cloning Document
,DocumentType
,
* Entity
, and Notation
nodes is implementation
* dependent.
*
* @param deep If true
, recursively clone the subtree under
* the specified node; if false
, clone only the node
* itself (and its attributes, if it is an Element
).
*
* @return The duplicate node.
*/
public Node cloneNode(boolean deep);
/**
* 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. 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.
*/
public void normalize();
/**
* Tests whether the DOM implementation implements a specific feature and
* that feature is supported by this node, as specified in .
*
* @param feature The name of the feature to test.
* @param version This is the version number of the feature to test.
*
* @return Returns true
if the specified feature is supported
* on this node, false
otherwise.
*
* @since DOM Level 2
*/
public boolean isSupported(
String feature,
String version
);
/**
* The namespace URI of this node, or null
if it is
* unspecified (see ).
* This is not a computed value that is the result of a namespace lookup
* based on an examination of the namespace declarations in scope. It is
* merely the namespace URI given at creation time.
* For nodes of any type other than 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.
*
* @return DOCUMENT ME!
*
* @since DOM Level 2
*/
public String getNamespaceURI();
/**
* The namespace prefix of this node, or null
if it is
* unspecified. When it is defined to be null
, setting it has
* no effect, including if the node is read-only.
* Note that setting this attribute, when permitted, changes the
* nodeName
attribute, which holds the qualified name, as
* well as the tagName
and name
attributes of
* the Element
and Attr
interfaces, when
* applicable.
* Setting the prefix to null
makes it unspecified, setting
* it to an empty string is implementation dependent.
* Note also that changing the prefix of an attribute that is known to
* have a default value, does not make a new attribute with the default
* value and the original prefix appear, since the
* namespaceURI
and localName
do not change.
* For nodes of any type other than 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
.
*
* @return DOCUMENT ME!
*
* @since DOM Level 2
*/
public String getPrefix();
/**
* The namespace prefix of this node, or null
if it is
* unspecified. When it is defined to be null
, setting it has
* no effect, including if the node is read-only.
* Note that setting this attribute, when permitted, changes the
* nodeName
attribute, which holds the qualified name, as
* well as the tagName
and name
attributes of
* the Element
and Attr
interfaces, when
* applicable.
* Setting the prefix to null
makes it unspecified, setting
* it to an empty string is implementation dependent.
* Note also that changing the prefix of an attribute that is known to
* have a default value, does not make a new attribute with the default
* value and the original prefix appear, since the
* namespaceURI
and localName
do not change.
* For nodes of any type other than 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
.
*
* @param prefix DOCUMENT ME!
*
* @exception DOMException INVALID_CHARACTER_ERR: Raised if the specified
* prefix contains an illegal character according to the XML
* version in use specified in the
* Document.xmlVersion
attribute.
* NO_MODIFICATION_ALLOWED_ERR: Raised if this node is
* readonly.
* NAMESPACE_ERR: Raised if the specified prefix
* is malformed per the Namespaces in XML specification, if the
* namespaceURI
of this node is null
,
* if the specified prefix is "xml" and the
* namespaceURI
of this node is different from "
* http://www.w3.org/XML/1998/namespace
* ", if this node is an attribute and the specified prefix
* is "xmlns" and the namespaceURI
of this node is
* different from " http://www.w3.org/2000/xmlns/
* ", or if this node is an attribute and the
* qualifiedName
of this node is "xmlns" [ XML
* Namespaces ] .
*
* @since DOM Level 2
*/
public void setPrefix(String prefix)
throws DOMException;
/**
* Returns the local part of the qualified name of this node.
* For nodes of any type other than ELEMENT_NODE
and
* ATTRIBUTE_NODE
and nodes created with a DOM Level 1
* method, such as Document.createElement()
, this is always
* null
.
*
* @return DOCUMENT ME!
*
* @since DOM Level 2
*/
public String getLocalName();
/**
* Returns whether this node (if it is an element) has any attributes.
*
* @return Returns true
if this node has any attributes,
* false
otherwise.
*
* @since DOM Level 2
*/
public boolean hasAttributes();
/**
* The absolute base URI of this node or 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.
*
* @return DOCUMENT ME!
*
* @since DOM Level 3
*/
public String getBaseURI();
/**
* 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.
*
* @param other The node to compare against the reference node.
*
* @return Returns how the node is positioned relatively to the reference
* node.
*
* @exception DOMException NOT_SUPPORTED_ERR: when the compared nodes are
* from different DOM implementations that do not coordinate to
* return consistent implementation-specific results.
*
* @since DOM Level 3
*/
public short compareDocumentPosition(Node other)
throws DOMException;
/**
* This attribute returns the text content of this node and its
* descendants. When it is defined to be 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.
* On getting, no serialization is performed, the returned string does not
* contain any markup. No whitespace normalization is performed and the
* returned string does not contain the white spaces in element content
* (see the attribute Text.isElementContentWhitespace
).
* Similarly, on setting, no parsing is performed either, the input string
* is taken as pure textual content.
* The string returned is made of the text content of this node depending
* on its type, as defined below:
*
*
*
* 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
*
*
*
* @return DOCUMENT ME!
*
* @exception DOMException DOMSTRING_SIZE_ERR: Raised when it would return
* more characters than fit in a DOMString
* variable on the implementation platform.
*
* @since DOM Level 3
*/
public String getTextContent()
throws DOMException;
/**
* This attribute returns the text content of this node and its
* descendants. When it is defined to be 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.
* On getting, no serialization is performed, the returned string does not
* contain any markup. No whitespace normalization is performed and the
* returned string does not contain the white spaces in element content
* (see the attribute Text.isElementContentWhitespace
).
* Similarly, on setting, no parsing is performed either, the input string
* is taken as pure textual content.
* The string returned is made of the text content of this node depending
* on its type, as defined below:
*
*
*
* 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
*
*
*
* @param textContent DOCUMENT ME!
*
* @exception DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the
* node is readonly.
*
* @since DOM Level 3
*/
public void setTextContent(String textContent)
throws DOMException;
/**
* Returns whether this node is the same node as the given one.
* This method provides a way to determine whether two 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.
*
* @param other The node to test against.
*
* @return Returns true
if the nodes are the same,
* false
otherwise.
*
* @since DOM Level 3
*/
public boolean isSameNode(Node other);
/**
* Look up the prefix associated to the given namespace URI, starting from
* this node. The default namespace declarations are ignored by this
* method.
* See for details on the algorithm used by this method.
*
* @param namespaceURI The namespace URI to look for.
*
* @return Returns an associated namespace prefix if found or
* null
if none is found. If more than one prefix are
* associated to the namespace prefix, the returned namespace
* prefix is implementation dependent.
*
* @since DOM Level 3
*/
public String lookupPrefix(String namespaceURI);
/**
* This method checks if the specified namespaceURI
is the
* default namespace or not.
*
* @param namespaceURI The namespace URI to look for.
*
* @return Returns true
if the specified
* namespaceURI
is the default namespace,
* false
otherwise.
*
* @since DOM Level 3
*/
public boolean isDefaultNamespace(String namespaceURI);
/**
* Look up the namespace URI associated to the given prefix, starting from
* this node.
* See for details on the algorithm used by this method.
*
* @param prefix The prefix to look for. If this parameter is
* null
, the method will return the default namespace
* URI if any.
*
* @return Returns the associated namespace URI or null
if
* none is found.
*
* @since DOM Level 3
*/
public String lookupNamespaceURI(String prefix);
/**
* Tests whether two nodes are equal.
* This method tests for equality of nodes, not sameness (i.e., whether
* the two nodes are references to the same object) which can be tested
* with Node.isSameNode()
. All nodes that are the same will
* also be equal, though the reverse may not be true.
* Two nodes are equal if and only if the following conditions are
* satisfied:
*
*
* -
* The two nodes are of the same type.
*
* -
* The following string attributes are equal:
nodeName
,
* localName
,namespaceURI
,
* prefix
,nodeValue
. This is: they are both
* null
, or they have the same length and are character for
* character identical.
*
* -
* The
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.
*
* -
* The
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.
*
*
*
*
For two DocumentType
nodes to be equal, the following
* conditions must also be satisfied:
*
*
* -
* The following string attributes are equal:
publicId
,
* systemId
,internalSubset
.
*
* -
* The
entities
NamedNodeMaps
are equal.
*
* -
* The
notations
NamedNodeMaps
are equal.
*
*
*
*
On the other hand, the following do not affect equality: the
* 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.
*
* @param arg The node to compare equality with.
*
* @return Returns true
if the nodes are equal,
* false
otherwise.
*
* @since DOM Level 3
*/
public boolean isEqualNode(Node arg);
/**
* This method returns a specialized object which implements the
* specialized APIs of the specified feature and version, as specified in
* . The specialized object may also be obtained by using binding-specific
* casting methods but is not necessarily expected to, as discussed in .
* This method also allow the implementation to provide specialized
* objects which do not support the Node
interface.
*
* @param feature The name of the feature requested. Note that any plus
* sign "+" prepended to the name of the feature will be ignored
* since it is not significant in the context of this method.
* @param version This is the version number of the feature to test.
*
* @return Returns an object which implements the specialized APIs of the
* specified feature and version, if any, or null
if
* there is no object which implements interfaces associated with
* that feature. If the DOMObject
returned by this
* method implements the Node
interface, it must
* delegate to the primary core Node
and not return
* results inconsistent with the primary core Node
* such as attributes, childNodes, etc.
*
* @since DOM Level 3
*/
public Object getFeature(
String feature,
String version
);
/**
* Associate an object to a key on this node. The object can later be
* retrieved from this node by calling getUserData
with the
* same key.
*
* @param key The key to associate the object to.
* @param data The object to associate to the given key, or
* null
to remove any existing association to that
* key.
* @param handler The handler to associate to that key, or
* null
.
*
* @return Returns the DOMUserData
previously associated to
* the given key on this node, or null
if there was
* none.
*
* @since DOM Level 3
*/
public Object setUserData(
String key,
Object data,
UserDataHandler handler
);
/**
* Retrieves the object associated to a key on a this node. The object must
* first have been set to this node by calling setUserData
* with the same key.
*
* @param key The key the object is associated to.
*
* @return Returns the DOMUserData
associated to the given key
* on this node, or null
if there was none.
*
* @since DOM Level 3
*/
public Object getUserData(String key);
}