Class CoreDocumentImpl
- All Implemented Interfaces:
Cloneable
,Document
,EventTarget
,Node
,NodeList
- Direct Known Subclasses:
DocumentImpl
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.
The CoreDocumentImpl class only implements the DOM Core. Additional modules are supported by the more complete DocumentImpl subclass.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate String
Experimental DOM Level 3 feature: Document actualEncodingprotected boolean
Allow grammar access.protected int
Number of alterations made to this document since its creation.private ElementImpl
Document element.private DocumentTypeImpl
Document type.private int
The following are required for compareDocumentPositionprivate String
Experimental DOM Level 3 feature: Document encodingprotected boolean
Bypass error checking.private String
Experimental DOM Level 3 feature: documentURIprivate NodeListCache
NodeListCache free listIdentifiers.private static final int[]
Table for quick check of child insertion.private int
private boolean
Experimental DOM Level 3 feature: Document standaloneprivate String
Experimental DOM Level 3 feature: Document versionprivate boolean
Fields inherited from class org.htmlunit.cyberneko.xerces.dom.ParentNode
firstChild, fNodeListCache, ownerDocument
Fields inherited from class org.htmlunit.cyberneko.xerces.dom.ChildNode
nextSibling_, previousSibling_
Fields inherited from class org.htmlunit.cyberneko.xerces.dom.NodeImpl
DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_IS_CONTAINED, DOCUMENT_POSITION_PRECEDING, FIRSTCHILD, HASSTRING, ID, NORMALIZED, OWNED, ownerNode_, READONLY, SPECIFIED, SYNCCHILDREN
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
-
Constructor Summary
ConstructorsConstructorDescriptionNON-DOM: Actually creating a Document is outside the DOM's spec, since it has to operate in terms of a particular implementation.CoreDocumentImpl
(boolean grammarAccess) Constructor.CoreDocumentImpl
(DocumentType doctype) For DOM2 support.CoreDocumentImpl
(DocumentType doctype, boolean grammarAccess) For DOM2 support. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addEventListener
(NodeImpl node, String type, EventListener listener, boolean useCapture) DOM Level 3 WD - Experimental Change the node's ownerDocument, and its subtree, to this Documentprotected boolean
canRenameElements
(String newNamespaceURI, String newNodeName, ElementImpl el) protected void
changed()
Denotes that this node has changed.protected int
changes()
Returns the number of changes to this node.protected final void
checkDOMNSErr
(String prefix, String namespace) protected final void
checkNamespaceWF
(String qname, int colon1, int colon2) protected final void
checkQName
(String prefix, String local) Checks if the given qualified name is legal with respect to the version of XML to which this document must conform.protected final void
Remove all identifiers from the ID tableclone()
Clone.cloneNode
(boolean deep) Deep-clone a document, including fixing ownerDoc for the cloned children.protected void
cloneNode
(CoreDocumentImpl newdoc, boolean deep) protected void
copyEventListeners
(NodeImpl src, NodeImpl tgt) createAttribute
(String name) Factory method; creates an Attribute having this Document as its OwnerDoc.createAttributeNS
(String namespaceURI, String qualifiedName) Introduced in DOM Level 2.createAttributeNS
(String namespaceURI, String qualifiedName, String localpart) NON-DOM: a factory method used by the Xerces DOM parser to create an element.createCDATASection
(String data) Factory method; creates a CDATASection having this Document as its OwnerDoc.createComment
(String data) Factory method; creates a Comment having this Document as its OwnerDoc.Factory method; creates a DocumentFragment having this Document as its OwnerDoc.createDocumentType
(String qualifiedName, String publicID, String systemID) NON-DOM Factory method; creates a DocumentType having this Document as its OwnerDoc.createElement
(String tagName) Factory method; creates an Element having this Document as its OwnerDoc.createElementNS
(String namespaceURI, String qualifiedName) Introduced in DOM Level 2.createElementNS
(String namespaceURI, String qualifiedName, String localpart) NON-DOM: a factory method used by the Xerces DOM parser to create an element.createEntity
(String name) NON-DOM Factory method; creates an Entity having this Document as its OwnerDoc.createEntityReference
(String name) Factory method; creates an EntityReference having this Document as its OwnerDoc.createProcessingInstruction
(String target, String data) Factory method; creates a ProcessingInstruction having this Document as its OwnerDoc.createTextNode
(String data) Factory method; creates a Text node having this Document as its OwnerDoc.(package private) void
deletedText
(CharacterDataImpl node, int offset, int count) A method to be called when some text was deleted from a text node, so that live objects can be notified.(package private) void
Puts the given NodeListCache in the free list.Returns the absolute base URI of this node or null if the implementation wasn't able to obtain an absolute URI.For XML, this provides access to the Document Type Definition.Convenience method, allowing direct access to the child node which is considered the root of the actual document content.DOM Level 3 WD - Experimental.DOM Level 3 CR - ExperimentalgetElementById
(String elementId) Introduced in DOM Level 2 Returns the Element whose ID is given by elementId.getElementsByTagName
(String tagname) Return a live collection of all descendant Elements (not just immediate children) having the specified tag name.getElementsByTagNameNS
(String namespaceURI, String localName) Introduced in DOM Level 2.boolean
getIdentifier
(String idName) Returns a previously registered element with the specified identifier name, or null if no element is registered.Retrieve information describing the abilities of this particular DOM implementation.DOM Level 3 CR - Experimental.(package private) NodeListCache
getNodeListCache
(ParentNode owner) Returns a NodeListCache for the given node.Returns the node name.protected int
NON-DOM: Get the number associated with this document.protected int
getNodeNumber
(Node node) short
Returns the node type.final Document
Find the Document that this Node belongs to (the document in whose context the Node was created).boolean
This attribute returns the text content of this node and its descendants.DOM Level 3 WD - Experimental.boolean
DOM Level 3 WD - Experimental.DOM Level 3 WD - Experimental.importNode
(Node source, boolean deep) Copies a node from another document to this document.private Node
importNode
(Node source, boolean deep, boolean cloningDoc, HashMap<Node, String> reversedIdentifiers) Overloaded implementation of DOM's importNode method.insertBefore
(Node newChild, Node refChild) Since a Document may contain at most one top-level Element child, and at most one DocumentType declaraction, we need to subclass our add-children methods to implement this constraint.(package private) void
insertedNode
(NodeImpl node, NodeImpl newInternal, boolean replace) A method to be called when a node has been inserted in the tree.(package private) void
insertedText
(CharacterDataImpl node, int offset, int count) A method to be called when some text was inserted into a text node, so that live objects can be notified.(package private) void
insertingNode
(NodeImpl node, boolean replace) A method to be called when a node is about to be inserted in the tree.protected boolean
Uses the kidOK lookup table to check whether the proposed tree structure is legal.static boolean
isValidQName
(String prefix, String local, boolean xml11Version) Checks if the given qualified name is legal with respect to the version of XML to which this document must conform.(package private) boolean
We could have more xml versions in future , but for now we could do with this to handle XML 1.0 and 1.1static boolean
Check the string against XML's definition of acceptable names for elements and attributes and so on using the XMLCharacterProperties utility class(package private) void
modifiedAttrValue
(AttrImpl attr, String oldvalue) A method to be called when an attribute value has been modified(package private) void
modifiedCharacterData
(NodeImpl node, String oldvalue, String value, boolean replace) A method to be called when a character data node has been modified(package private) void
modifyingCharacterData
(NodeImpl node, boolean replace) A method to be called when a character data node is about to be modifiedvoid
DOM Level 3 WD - Experimental Normalize document.void
putIdentifier
(String idName, Element element) Registers an identifier name with a specified element node.removeChild
(Node oldChild) Since insertBefore caches the docElement (and, currently, docType), removeChild has to know how to undo the cache(package private) void
removedAttrNode
(AttrImpl attr, NodeImpl oldOwner, String name) A method to be called when an attribute node has been removed(package private) void
removedNode
(NodeImpl node, boolean replace) A method to be called when a node has been removed from the tree.protected void
removeEventListener
(NodeImpl node, String type, EventListener listener, boolean useCapture) void
removeIdentifier
(String idName) Removes a previously registered element with the specified identifier name.(package private) void
removingNode
(NodeImpl node, NodeImpl oldChild, boolean replace) A method to be called when a node is about to be removed from the tree.(package private) void
renamedAttrNode
(Attr oldAt, Attr newAt) A method to be called when an attribute node has been renamed(package private) void
renamedElement
(Element oldEl, Element newEl) A method to be called when an element has been renamedrenameNode
(Node n, String namespaceURI, String name) DOM Level 3 WD - Experimental.replaceChild
(Node newChild, Node oldChild) Since we cache the docElement (and, currently, docType), replaceChild has to update the cache(package private) void
replacedCharacterData
(NodeImpl node, String oldvalue, String value) method to be called when a character data node has been replaced.(package private) void
replacedNode
(NodeImpl node) A method to be called when a node has been replaced in the tree.(package private) void
A method to be called when some text was changed in a text node, so that live objects can be notified.private ElementImpl
replaceRenameElement
(ElementImpl el, String namespaceURI, String name) (package private) void
replacingData
(NodeImpl node) A method to be called when a character data node is about to be replaced(package private) void
replacingNode
(NodeImpl node) A method to be called when a node is about to be replaced in the tree.(package private) void
setAttrNode
(AttrImpl attr, AttrImpl previous) A method to be called when an attribute node has been setvoid
setDocumentURI
(String documentURI) DOM Level 3 WD - Experimental.void
setErrorChecking
(boolean check) Sets whether the DOM implementation performs error checking upon operations.void
setInputEncoding
(String value) DOM Internal (Was a DOM L3 Core WD public interface method setActualEncoding )void
setStrictErrorChecking
(boolean check) void
setTextContent
(String textContent) This attribute returns the text content of this node and its descendants.void
setXmlEncoding
(String value) DOM Internal (Was a DOM L3 Core WD public interface method setXMLEncoding )void
setXmlStandalone
(boolean value) DOM Level 3 CR - Experimental.void
setXmlVersion
(String value) DOM Level 3 CR - Experimental.protected void
undeferChildren
(Node node) Traverses the DOM Tree and expands deferred nodes and their children.Methods inherited from class org.htmlunit.cyberneko.xerces.dom.ParentNode
checkNormalizationAfterInsert, checkNormalizationAfterRemove, getChildNodes, getChildNodesUnoptimized, getFirstChild, getLastChild, getLength, getTextContent, hasChildNodes, hasTextContent, internalInsertBefore, internalRemoveChild, isEqualNode, item, lastChild, nodeListGetLength, nodeListItem, ownerDocument, setOwnerDocument, synchronizeChildren
Methods inherited from class org.htmlunit.cyberneko.xerces.dom.ChildNode
getNextSibling, getParentNode, getPreviousSibling, parentNode, previousSibling
Methods inherited from class org.htmlunit.cyberneko.xerces.dom.NodeImpl
addEventListener, appendChild, compareDocumentPosition, dispatchEvent, getAttributes, getElementAncestor, getFeature, getLocalName, getNamespaceURI, getNodeValue, getPrefix, getUserData, hasAttributes, hasStringValue, hasStringValue, isDefaultNamespace, isFirstChild, isFirstChild, isIdAttribute, isIdAttribute, isNormalized, isNormalized, isOwned, isOwned, isSameNode, isSpecified, isSpecified, isSupported, lookupNamespacePrefix, lookupNamespaceURI, lookupPrefix, needsSyncChildren, needsSyncChildren, normalize, removeEventListener, setNodeValue, setPrefix, setUserData, toString
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.w3c.dom.Node
appendChild, compareDocumentPosition, getAttributes, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getParentNode, getPrefix, getPreviousSibling, getUserData, hasAttributes, hasChildNodes, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, setNodeValue, setPrefix, setUserData
-
Field Details
-
docType_
Document type. -
docElement_
Document element. -
fFreeNLCache_
NodeListCache free list -
encoding_
Experimental DOM Level 3 feature: Document encoding -
actualEncoding_
Experimental DOM Level 3 feature: Document actualEncoding -
version_
Experimental DOM Level 3 feature: Document version -
standalone_
private boolean standalone_Experimental DOM Level 3 feature: Document standalone -
fDocumentURI_
Experimental DOM Level 3 feature: documentURI -
identifiers_
Identifiers. -
kidOK
private static final int[] kidOKTable for quick check of child insertion. -
changes
protected int changesNumber of alterations made to this document since its creation. Serves as a "dirty bit" so that live objects such as NodeList can recognize when an alteration has been made and discard its cached state information.Any method that alters the tree structure MUST cause or be accompanied by a call to changed(), to inform it that any outstanding NodeLists may have to be updated.
(Required because NodeList is simultaneously "live" and integer- indexed -- a bad decision in the DOM's design.)
Note that changes which do not affect the tree's structure -- changing the node's name, for example -- do _not_ have to call changed().
Alternative implementation would be to use a cryptographic Digest value rather than a count. This would have the advantage that "harmless" changes (those producing equal() trees) would not force NodeList to resynchronize. Disadvantage is that it's slightly more prone to "false negatives", though that's the difference between "wildly unlikely" and "absurdly unlikely". IF we start maintaining digests, we should consider taking advantage of them.
Note: This used to be done a node basis, so that we knew what subtree changed. But since only DeepNodeList really use this today, the gain appears to be really small compared to the cost of having an int on every (parent) node plus having to walk up the tree all the way to the root to mark the branch as changed everytime a node is changed. So we now have a single counter global to the document. It means that some objects may flush their cache more often than necessary, but this makes nodes smaller and only the document needs to be marked as changed.
-
allowGrammarAccess
protected boolean allowGrammarAccessAllow grammar access. -
errorChecking
protected boolean errorCheckingBypass error checking. -
documentNumber_
private int documentNumber_The following are required for compareDocumentPosition -
nodeCounter_
private int nodeCounter_ -
nodeTable_
-
xml11Version_
private boolean xml11Version_
-
-
Constructor Details
-
CoreDocumentImpl
public CoreDocumentImpl()NON-DOM: Actually creating a Document is outside the DOM's spec, since it has to operate in terms of a particular implementation. -
CoreDocumentImpl
public CoreDocumentImpl(boolean grammarAccess) Constructor.- Parameters:
grammarAccess
- grammar acess flag
-
CoreDocumentImpl
For DOM2 support. The createDocument factory method is in DOMImplementation.- Parameters:
doctype
- theDocumentType
-
CoreDocumentImpl
For DOM2 support.- Parameters:
doctype
- theDocumentType
grammarAccess
- grammar access flag
-
-
Method Details
-
getOwnerDocument
Description copied from class:ParentNode
Find the Document that this Node belongs to (the document in whose context the Node was created). The Node may or may not currently be part of that Document's actual contents. Find the Document that this Node belongs to (the document in whose context the Node was created). The Node may or may not currently be part of that Document's actual contents.- Specified by:
getOwnerDocument
in interfaceNode
- Overrides:
getOwnerDocument
in classParentNode
-
getNodeType
public short getNodeType()Returns the node type.- Specified by:
getNodeType
in interfaceNode
- Specified by:
getNodeType
in classNodeImpl
-
getNodeName
Returns the node name.- Specified by:
getNodeName
in interfaceNode
- Specified by:
getNodeName
in classNodeImpl
-
cloneNode
Deep-clone a document, including fixing ownerDoc for the cloned children. Note that this requires bypassing the WRONG_DOCUMENT_ERR protection. I've chosen to implement it by calling importNode which is DOM Level 2.- Specified by:
cloneNode
in interfaceNode
- Overrides:
cloneNode
in classParentNode
- Parameters:
deep
- boolean, iff true replicate children- Returns:
- org.w3c.dom.Node
- See Also:
-
cloneNode
-
insertBefore
Since a Document may contain at most one top-level Element child, and at most one DocumentType declaraction, we need to subclass our add-children methods to implement this constraint. Since appendChild() is implemented as insertBefore(,null), altering the latter fixes both.While I'm doing so, I've taken advantage of the opportunity to cache documentElement and docType so we don't have to search for them.
REVISIT: According to the spec it is not allowed to alter neither the document element nor the document type in any way
- Specified by:
insertBefore
in interfaceNode
- Overrides:
insertBefore
in classParentNode
- Parameters:
newChild
- The Node to be moved to our subtree. As a convenience feature, inserting a DocumentNode will instead insert all its children.refChild
- Current child which newChild should be placed immediately before. If refChild is null, the insertion occurs after all existing Nodes, like appendChild().- Returns:
- newChild, in its new state (relocated, or emptied in the case of DocumentNode.)
- Throws:
DOMException
- HIERARCHY_REQUEST_ERR if newChild is of a type that shouldn't be a child of this node, or if newChild is an ancestor of this node.DOMException
- WRONG_DOCUMENT_ERR if newChild has a different owner document than we do.DOMException
- NOT_FOUND_ERR if refChild is not a child of this node.DOMException
- NO_MODIFICATION_ALLOWED_ERR if this node is read-only.- See Also:
-
removeChild
Since insertBefore caches the docElement (and, currently, docType), removeChild has to know how to undo the cacheREVISIT: According to the spec it is not allowed to alter neither the document element nor the document type in any way
- Specified by:
removeChild
in interfaceNode
- Overrides:
removeChild
in classParentNode
- Returns:
- oldChild, in its new state (removed).
- Throws:
DOMException
- NOT_FOUND_ERR if oldChild is not a child of this node.DOMException
- NO_MODIFICATION_ALLOWED_ERR if this node is read-only.- See Also:
-
replaceChild
Since we cache the docElement (and, currently, docType), replaceChild has to update the cacheREVISIT: According to the spec it is not allowed to alter neither the document element nor the document type in any way
- Specified by:
replaceChild
in interfaceNode
- Overrides:
replaceChild
in classParentNode
- Returns:
- oldChild, in its new state (removed).
- Throws:
DOMException
- HIERARCHY_REQUEST_ERR if newChild is of a type that shouldn't be a child of this node, or if newChild is one of our ancestors.DOMException
- WRONG_DOCUMENT_ERR if newChild has a different owner document than we do.DOMException
- NOT_FOUND_ERR if oldChild is not a child of this node.DOMException
- NO_MODIFICATION_ALLOWED_ERR if this node is read-only.- See Also:
-
getTextContent
Description copied from class:NodeImpl
This attribute returns the text content of this node and its descendants. When it is defined to be null, setting it has no effect. When set, any possible children this node may have are removed and replaced by a singleText
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, the returned string does not contain the element content whitespaces . 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, 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 nodesATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE nodeValue
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE null - Specified by:
getTextContent
in interfaceNode
- Overrides:
getTextContent
in classParentNode
- Throws:
DOMException
- DOMSTRING_SIZE_ERR: Raised when it would return more characters than fit in aDOMString
variable on the implementation platform.
-
setTextContent
Description copied from class:NodeImpl
This attribute returns the text content of this node and its descendants. When it is defined to be null, setting it has no effect. When set, any possible children this node may have are removed and replaced by a singleText
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, the returned string does not contain the element content whitespaces . 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, 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 nodesATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE nodeValue
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE null - Specified by:
setTextContent
in interfaceNode
- Overrides:
setTextContent
in classParentNode
- Throws:
DOMException
- DOMSTRING_SIZE_ERR: Raised when it would return more characters than fit in aDOMString
variable on the implementation platform.
-
createAttribute
Factory method; creates an Attribute having this Document as its OwnerDoc.- Specified by:
createAttribute
in interfaceDocument
- Parameters:
name
- The name of the attribute. Note that the attribute's value is _not_ established at the factory; remember to set it!- Throws:
DOMException
- INVALID_NAME_ERR if the attribute name is not acceptable.
-
createCDATASection
Factory method; creates a CDATASection having this Document as its OwnerDoc.- Specified by:
createCDATASection
in interfaceDocument
- Parameters:
data
- The initial contents of the CDATA- Throws:
DOMException
- NOT_SUPPORTED_ERR for HTML documents. (HTML not yet implemented.)
-
createComment
Factory method; creates a Comment having this Document as its OwnerDoc.- Specified by:
createComment
in interfaceDocument
- Parameters:
data
- The initial contents of the Comment.- Returns:
- comment
-
createDocumentFragment
Factory method; creates a DocumentFragment having this Document as its OwnerDoc.- Specified by:
createDocumentFragment
in interfaceDocument
-
createElement
Factory method; creates an Element having this Document as its OwnerDoc.- Specified by:
createElement
in interfaceDocument
- Parameters:
tagName
- The name of the element type to instantiate. For XML, this is case-sensitive. For HTML, the tagName parameter may be provided in any case, but it must be mapped to the canonical uppercase form by the DOM implementation.- Throws:
DOMException
- INVALID_NAME_ERR if the tag name is not acceptable.
-
createEntityReference
Factory method; creates an EntityReference having this Document as its OwnerDoc.- Specified by:
createEntityReference
in interfaceDocument
- Parameters:
name
- The name of the Entity we wish to refer to- Throws:
DOMException
- NOT_SUPPORTED_ERR for HTML documents, where nonstandard entities are not permitted. (HTML not yet implemented.)
-
createProcessingInstruction
public ProcessingInstruction createProcessingInstruction(String target, String data) throws DOMException Factory method; creates a ProcessingInstruction having this Document as its OwnerDoc.- Specified by:
createProcessingInstruction
in interfaceDocument
- Parameters:
target
- The target "processor channel"data
- Parameter string to be passed to the target.- Throws:
DOMException
- INVALID_NAME_ERR if the target name is not acceptable.DOMException
- NOT_SUPPORTED_ERR for HTML documents. (HTML not yet implemented.)
-
createTextNode
Factory method; creates a Text node having this Document as its OwnerDoc.- Specified by:
createTextNode
in interfaceDocument
- Parameters:
data
- The initial contents of the Text.- Returns:
- the text
-
getDoctype
For XML, this provides access to the Document Type Definition. For HTML documents, and XML documents which don't specify a DTD, it will be null.- Specified by:
getDoctype
in interfaceDocument
-
getDocumentElement
Convenience method, allowing direct access to the child node which is considered the root of the actual document content. For HTML, where it is legal to have more than one Element at the top level of the document, we pick the one with the tagName "HTML". For XML there should be only one top-level(HTML not yet supported.)
- Specified by:
getDocumentElement
in interfaceDocument
-
getElementsByTagName
Return a live collection of all descendant Elements (not just immediate children) having the specified tag name.- Specified by:
getElementsByTagName
in interfaceDocument
- Parameters:
tagname
- The type of Element we want to gather. "*" will be taken as a wildcard, meaning "all elements in the document."- See Also:
-
getImplementation
Retrieve information describing the abilities of this particular DOM implementation. Intended to support applications that may be using DOMs retrieved from several different sources, potentially with different underlying representations.- Specified by:
getImplementation
in interfaceDocument
-
setErrorChecking
public void setErrorChecking(boolean check) Sets whether the DOM implementation performs error checking upon operations. Turning off error checking only affects the following DOM checks:- Checking strings to make sure that all characters are legal XML characters
- Hierarchy checking such as allowed children, checks for cycles, etc.
Turning off error checking does not turn off the following checks:
- Read only checks
- Checks related to DOM events
- Parameters:
check
- check flag
-
setStrictErrorChecking
public void setStrictErrorChecking(boolean check) - Specified by:
setStrictErrorChecking
in interfaceDocument
-
getErrorChecking
public boolean getErrorChecking()- Returns:
- true if the DOM implementation performs error checking.
-
getStrictErrorChecking
public boolean getStrictErrorChecking()- Specified by:
getStrictErrorChecking
in interfaceDocument
-
getInputEncoding
DOM Level 3 CR - Experimental. (Was getActualEncoding)An attribute specifying the encoding used for this document at the time of the parsing. This is
null
when it is not known, such as when theDocument
was created in memory.- Specified by:
getInputEncoding
in interfaceDocument
-
setInputEncoding
DOM Internal (Was a DOM L3 Core WD public interface method setActualEncoding )An attribute specifying the actual encoding of this document. This is
null
otherwise.
This attribute represents the property [character encoding scheme] defined in.- Parameters:
value
- the value
-
setXmlEncoding
DOM Internal (Was a DOM L3 Core WD public interface method setXMLEncoding )An attribute specifying, as part of the XML declaration, the encoding of this document. This is null when unspecified.
- Parameters:
value
- the value
-
getXmlEncoding
DOM Level 3 WD - Experimental. The encoding of this document (part of XML Declaration)- Specified by:
getXmlEncoding
in interfaceDocument
-
setXmlVersion
DOM Level 3 CR - Experimental. version - An attribute specifying, as part of the XML declaration, the version number of this document.- Specified by:
setXmlVersion
in interfaceDocument
-
getXmlVersion
DOM Level 3 WD - Experimental. The version of this document (part of XML Declaration)- Specified by:
getXmlVersion
in interfaceDocument
-
setXmlStandalone
DOM Level 3 CR - Experimental.Xmlstandalone - An attribute specifying, as part of the XML declaration, whether this document is standalone
- Specified by:
setXmlStandalone
in interfaceDocument
- Throws:
DOMException
- NOT_SUPPORTED_ERR: Raised if this document does not support the "XML" feature.
-
getXmlStandalone
public boolean getXmlStandalone()DOM Level 3 WD - Experimental. standalone that specifies whether this document is standalone (part of XML Declaration)- Specified by:
getXmlStandalone
in interfaceDocument
-
getDocumentURI
DOM Level 3 WD - Experimental. The location of the document ornull
if undefined.
Beware that when theDocument
supports the feature "HTML" , the href attribute of the HTML BASE element takes precedence over this attribute.- Specified by:
getDocumentURI
in interfaceDocument
-
canRenameElements
-
renameNode
DOM Level 3 WD - Experimental. Renaming node- Specified by:
renameNode
in interfaceDocument
- Throws:
DOMException
-
replaceRenameElement
-
normalizeDocument
public void normalizeDocument()DOM Level 3 WD - Experimental Normalize document.- Specified by:
normalizeDocument
in interfaceDocument
-
getDomConfig
DOM Level 3 CR - ExperimentalThe configuration used when
Document.normalizeDocument
is invoked.- Specified by:
getDomConfig
in interfaceDocument
-
getBaseURI
Returns the absolute base URI of this node or null if the implementation wasn't able to obtain an absolute URI. Note: If the URI is malformed, a null is returned.- Specified by:
getBaseURI
in interfaceNode
- Overrides:
getBaseURI
in classNodeImpl
- Returns:
- The absolute base URI of this node or null.
-
setDocumentURI
DOM Level 3 WD - Experimental.- Specified by:
setDocumentURI
in interfaceDocument
-
createDocumentType
public DocumentType createDocumentType(String qualifiedName, String publicID, String systemID) throws DOMException NON-DOM Factory method; creates a DocumentType having this Document as its OwnerDoc. (REC-DOM-Level-1-19981001 left the process of building DTD information unspecified.)- Parameters:
qualifiedName
- the namepublicID
- the public idsystemID
- the system id- Returns:
- the
DocumentType
- Throws:
DOMException
- NOT_SUPPORTED_ERR for HTML documents, where DTDs are not permitted. (HTML not yet implemented.)
-
createEntity
NON-DOM Factory method; creates an Entity having this Document as its OwnerDoc. (REC-DOM-Level-1-19981001 left the process of building DTD information unspecified.)- Parameters:
name
- The name of the Entity we wish to provide a value for.- Returns:
- the new entity
- Throws:
DOMException
- NOT_SUPPORTED_ERR for HTML documents, where nonstandard entities are not permitted. (HTML not yet implemented.)
-
getNodeNumber
protected int getNodeNumber()NON-DOM: Get the number associated with this document. Used to order documents in the implementation.- Overrides:
getNodeNumber
in classNodeImpl
- Returns:
- the node number
-
getNodeNumber
-
importNode
Copies a node from another document to this document. The new nodes are created using this document's factory methods and are populated with the data from the source's accessor methods defined by the DOM interfaces. Its behavior is otherwise similar to that of cloneNode.According to the DOM specifications, document nodes cannot be imported and a NOT_SUPPORTED_ERR exception is thrown if attempted.
- Specified by:
importNode
in interfaceDocument
- Throws:
DOMException
-
importNode
private Node importNode(Node source, boolean deep, boolean cloningDoc, HashMap<Node, String> reversedIdentifiers) throws DOMExceptionOverloaded implementation of DOM's importNode method. This method provides the core functionality for the public importNode and cloneNode methods.The reversedIdentifiers parameter is provided for cloneNode to preserve the document's identifiers. The HashMap has Elements as the keys and their identifiers as the values. When an element is being imported, a check is done for an associated identifier. If one exists, the identifier is registered with the new, imported element. If reversedIdentifiers is null, the parameter is not applied.
- Parameters:
source
- the source nodedeep
- true for deep iportcloningDoc
- the cloning DocreversedIdentifiers
- helper- Throws:
DOMException
-
adoptNode
DOM Level 3 WD - Experimental Change the node's ownerDocument, and its subtree, to this Document -
undeferChildren
Traverses the DOM Tree and expands deferred nodes and their children.- Parameters:
node
- the node
-
getElementById
Introduced in DOM Level 2 Returns the Element whose ID is given by elementId. If no such element exists, returns null. Behavior is not defined if more than one element has this ID.Note: The DOM implementation must have information that says which attributes are of type ID. Attributes with the name "ID" are not of type ID unless so defined. Implementations that do not know whether attributes are of type ID or not are expected to return null.
- Specified by:
getElementById
in interfaceDocument
- See Also:
-
clearIdentifiers
protected final void clearIdentifiers()Remove all identifiers from the ID table -
putIdentifier
Registers an identifier name with a specified element node. If the identifier is already registered, the new element node replaces the previous node. If the specified element node is null, removeIdentifier() is called.- Parameters:
idName
- the nameelement
- the element- See Also:
-
getIdentifier
Returns a previously registered element with the specified identifier name, or null if no element is registered.- Parameters:
idName
- the name- Returns:
- the element
- See Also:
-
removeIdentifier
Removes a previously registered element with the specified identifier name.- Parameters:
idName
- the name- See Also:
-
createElementNS
Introduced in DOM Level 2.Creates an element of the given qualified name and namespace URI. If the given namespaceURI is null or an empty string and the qualifiedName has a prefix that is "xml", the created element is bound to the predefined namespace "http://www.w3.org/XML/1998/namespace" [Namespaces].
- Specified by:
createElementNS
in interfaceDocument
- Parameters:
namespaceURI
- The namespace URI of the element to create.qualifiedName
- The qualified name of the element type to instantiate.- Returns:
- Element A new Element object with the following attributes:
- Throws:
DOMException
- INVALID_CHARACTER_ERR: Raised if the specified name contains an invalid character.DOMException
- NAMESPACE_ERR: Raised if the qualifiedName has a prefix that is "xml" and the namespaceURI is neither null nor an empty string nor "http://www.w3.org/XML/1998/namespace", or if the qualifiedName has a prefix different from "xml" and the namespaceURI is null or an empty string.
-
createElementNS
public Element createElementNS(String namespaceURI, String qualifiedName, String localpart) throws DOMException NON-DOM: a factory method used by the Xerces DOM parser to create an element.- Parameters:
namespaceURI
- The namespace URI of the element to create.qualifiedName
- The qualified name of the element type to instantiate.localpart
- The local name of the attribute to instantiate.- Returns:
- Element A new Element object with the following attributes:
- Throws:
DOMException
- INVALID_CHARACTER_ERR: Raised if the specified name contains an invalid character.
-
createAttributeNS
Introduced in DOM Level 2.Creates an attribute of the given qualified name and namespace URI. If the given namespaceURI is null or an empty string and the qualifiedName has a prefix that is "xml", the created element is bound to the predefined namespace "http://www.w3.org/XML/1998/namespace" [Namespaces].
- Specified by:
createAttributeNS
in interfaceDocument
- Parameters:
namespaceURI
- The namespace URI of the attribute to create. When it is null or an empty string, this method behaves like createAttribute.qualifiedName
- The qualified name of the attribute to instantiate.- Returns:
- Attr A new Attr object.
- Throws:
DOMException
- INVALID_CHARACTER_ERR: Raised if the specified name contains an invalid character.
-
createAttributeNS
public Attr createAttributeNS(String namespaceURI, String qualifiedName, String localpart) throws DOMException NON-DOM: a factory method used by the Xerces DOM parser to create an element.- Parameters:
namespaceURI
- The namespace URI of the attribute to create. When it is null or an empty string, this method behaves like createAttribute.qualifiedName
- The qualified name of the attribute to instantiate.localpart
- The local name of the attribute to instantiate.- Returns:
- Attr A new Attr object.
- Throws:
DOMException
- INVALID_CHARACTER_ERR: Raised if the specified name contains an invalid character.
-
getElementsByTagNameNS
Introduced in DOM Level 2.Returns a NodeList of all the Elements with a given local name and namespace URI in the order in which they would be encountered in a preorder traversal of the Document tree.
- Specified by:
getElementsByTagNameNS
in interfaceDocument
- Parameters:
namespaceURI
- The namespace URI of the elements to match on. The special value "*" matches all namespaces. When it is null or an empty string, this method behaves like getElementsByTagName.localName
- The local name of the elements to match on. The special value "*" matches all local names.- Returns:
- NodeList A new NodeList object containing all the matched Elements.
-
clone
Clone.- Overrides:
clone
in classObject
- Throws:
CloneNotSupportedException
-
isXMLName
Check the string against XML's definition of acceptable names for elements and attributes and so on using the XMLCharacterProperties utility class- Parameters:
s
- the string to checkxml11Version
- if true use xml 11 rules- Returns:
- true or false
-
isValidQName
Checks if the given qualified name is legal with respect to the version of XML to which this document must conform.- Parameters:
prefix
- prefix of qualified namelocal
- local part of qualified namexml11Version
- if true use xml 11 rules- Returns:
- true or false
-
isKidOK
Uses the kidOK lookup table to check whether the proposed tree structure is legal.- Parameters:
parent
- the parentchild
- the child- Returns:
- true or false
-
changed
protected void changed()Denotes that this node has changed. -
changes
protected int changes()Returns the number of changes to this node. -
getNodeListCache
Returns a NodeListCache for the given node. -
freeNodeListCache
Puts the given NodeListCache in the free list. Note: The owner node can keep using it until we reuse it -
checkNamespaceWF
-
checkDOMNSErr
-
checkQName
Checks if the given qualified name is legal with respect to the version of XML to which this document must conform.- Parameters:
prefix
- prefix of qualified namelocal
- local part of qualified name
-
isXML11Version
boolean isXML11Version()We could have more xml versions in future , but for now we could do with this to handle XML 1.0 and 1.1 -
addEventListener
protected void addEventListener(NodeImpl node, String type, EventListener listener, boolean useCapture) -
removeEventListener
protected void removeEventListener(NodeImpl node, String type, EventListener listener, boolean useCapture) -
copyEventListeners
-
replacedText
A method to be called when some text was changed in a text node, so that live objects can be notified. -
deletedText
A method to be called when some text was deleted from a text node, so that live objects can be notified. -
insertedText
A method to be called when some text was inserted into a text node, so that live objects can be notified. -
modifyingCharacterData
A method to be called when a character data node is about to be modified -
modifiedCharacterData
A method to be called when a character data node has been modified -
insertingNode
A method to be called when a node is about to be inserted in the tree. -
insertedNode
A method to be called when a node has been inserted in the tree. -
removingNode
A method to be called when a node is about to be removed from the tree. -
removedNode
A method to be called when a node has been removed from the tree. -
replacingNode
A method to be called when a node is about to be replaced in the tree. -
replacedNode
A method to be called when a node has been replaced in the tree. -
replacingData
A method to be called when a character data node is about to be replaced -
replacedCharacterData
method to be called when a character data node has been replaced. -
modifiedAttrValue
A method to be called when an attribute value has been modified -
setAttrNode
A method to be called when an attribute node has been set -
removedAttrNode
A method to be called when an attribute node has been removed -
renamedAttrNode
A method to be called when an attribute node has been renamed -
renamedElement
A method to be called when an element has been renamed
-