com.novell.xml.dom
Class DocumentImpl

java.lang.Object
  extended bycom.novell.xml.dom.NodeImpl
      extended bycom.novell.xml.dom.DocumentImpl
All Implemented Interfaces:
Cloneable, Comparable, Document, Node

public class DocumentImpl
extends NodeImpl
implements Document

Novell implementation of DOM level 1 Document interface


Field Summary
 
Fields inherited from class com.novell.xml.dom.NodeImpl
allowedChildren, baseURI, changeCount, document, documentOrderVal, expandedName, firstChild, lastChild, localName, namespaceURI, nextOrderVal, nextSibling, nodeName, nodeValue, parentNode, prefix, previousSibling, toStringSerializes, xmlnsPrefix, xmlPrefix, xpathBehavior
 
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
Constructor Summary
protected DocumentImpl()
          Create a new DocumentImpl object
 
Method Summary
 void addId(ElementImpl element, String id)
          Add an element to the id table non-DOM
protected  boolean checkNames()
          Return true if name checking is enabled
static String constructMessage(String key, Object[] parms)
          Construct a message from a format message in the properties file and an array of parameters
 Attr createAttribute(String name)
          Creates an Attr of the given name.
 Attr createAttributeNS(String namespaceURI, String qualifiedName)
          Creates an attribute of the given qualified name and namespace URI.
 CDATASection createCDATASection(String data)
          Creates a CDATASection node whose value is the specified string.
 Comment createComment(String data)
          Creates a Comment node given the specified string.
 DocumentFragment createDocumentFragment()
          Creates an empty DocumentFragment object.
 Element createElement(String tagName)
          Creates an element of the type specified.
 Element createElementNS(String namespaceURI, String qualifiedName)
          Creates an element of the given qualified name and namespace URI.
 Entity createEntity(String name, String publicId, String systemId, String notationName)
          Create an Entity node non-DOM
 EntityReference createEntityReference(String name)
          Creates an EntityReference object.
 NamespaceImpl createNamespaceNode(String prefix, String uri)
          Create a namespace node non-DOM
 Notation createNotation(String name, String publicId, String systemId)
          Create a Notation node non-DOM
 ProcessingInstruction createProcessingInstruction(String target, String data)
          Creates a ProcessingInstruction node given the specified name and data strings.
 Text createTextNode(String data)
          Creates a Text node given the specified string.
 ElementImpl findElementById(String id)
          Look up an element by it's id non-DOM
 DocumentType getDoctype()
          The Document Type Declaration (see DocumentType) associated with this document.
 Element getDocumentElement()
          This is a convenience attribute that allows direct access to the child node that is the root element of the document.
 Element getElementById(String elementId)
          Returns the Element whose ID is given by elementId.
 NodeList getElementsByTagName(String tagname)
          Returns a NodeList of all the Elements with a given tag name in the order in which they would be encountered in a preorder traversal of the Document tree.
 NodeList getElementsByTagNameNS(String namespaceURI, String localName)
          Returns a NodeList of all the Elements with a given local name and namespace URI in the order in which they are encountered in a preorder traversal of the Document tree.
 DOMImplementation getImplementation()
          The DOMImplementation object that handles this document.
 String getNodeName()
          The name of this node, depending on its type; see the table above.
 short getNodeType()
          A code representing the type of the underlying object, as defined above.
 Document getOwnerDocument()
          The Document object associated with this node.
 boolean getSmartNS()
          Get smart namespace support enabled flag
 Node importNode(Node importedNode, boolean deep)
          Imports a node from another document to this document.
 boolean isLocked()
          Return if document tree is locked non-DOM
 boolean isOrderCurrent()
          Return true if document order information in the document tree is current.
 void lock()
          Lock this document tree against modification non-DOM
static DocumentImpl newDocument()
          Factory method to create a new document
 void removeId(String id)
          Remove an element from the id table non-DOM
 void setCheckNames(boolean enable)
          Set whether to enable name checking for this document.
 void setDocumentType(DocumentTypeImpl docType)
          Set the DocumentType node for this document non-DOM
 void setOrderCurrent(boolean orderIsCurrent)
          Set the order state.
 void setSmartNS(boolean enable)
          Set whether to enable smart namespace support.
 void unlock()
          Unlock this document tree for modification non-DOM
 void updateDocumentOrder()
          Setup the document order information if it has not been set, or has been invalidated by changes to the tree.
 
Methods inherited from class com.novell.xml.dom.NodeImpl
appendChild, checkName, checkNameNS, cloneNode, compareTo, fetchNamespacesFromDecls, gateModify, getAttributes, getBaseURI, getChangeCount, getChildNodes, getColumnNumber, getDocumentOrder, getExpandedName, getFirstChild, getLastChild, getLineNumber, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, incChangeCount, insertBefore, isChildAllowed, isReadOnly, isSupported, normalize, purgeCachedExpandedNames, removeChild, replaceChild, setBaseURI, setColumnNumber, setDeepReadOnly, setDocumentOrder, setLineNumber, setNodeValue, setOwnerDocument, setPrefix, setReadOnly, setXPathBehavior, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.w3c.dom.Node
appendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix
 

Constructor Detail

DocumentImpl

protected DocumentImpl()
Create a new DocumentImpl object

Method Detail

getNodeName

public String getNodeName()
The name of this node, depending on its type; see the table above.

Specified by:
getNodeName in interface Node
Overrides:
getNodeName in class NodeImpl

getNodeType

public short getNodeType()
A code representing the type of the underlying object, as defined above.

Specified by:
getNodeType in interface Node
Specified by:
getNodeType in class NodeImpl

getOwnerDocument

public Document getOwnerDocument()
The Document object associated with this node. This is also the Document object used to create new nodes. When this node is a Document this is null.

Specified by:
getOwnerDocument in interface Node
Overrides:
getOwnerDocument in class NodeImpl

getDoctype

public DocumentType getDoctype()
The Document Type Declaration (see DocumentType) associated with this document. For HTML documents as well as XML documents without a document type declaration this returns null. The DOM Level 1 does not support editing the Document Type Declaration, therefore docType cannot be altered in any way.

Specified by:
getDoctype in interface Document

getImplementation

public DOMImplementation getImplementation()
The DOMImplementation object that handles this document. A DOM application may use objects from multiple implementations.

Specified by:
getImplementation in interface Document

getDocumentElement

public Element getDocumentElement()
This is a convenience attribute that allows direct access to the child node that is the root element of the document. For HTML documents, this is the element with the tagName "HTML".

Specified by:
getDocumentElement in interface Document

createElement

public Element createElement(String tagName)
                      throws DOMException
Creates an element of the type specified. Note that the instance returned implements the Element interface, so attributes can be specified directly on the returned object.

Specified by:
createElement in interface Document
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.
Returns:
A new Element object.
Throws:
DOMException - INVALID_CHARACTER_ERR: Raised if the specified name contains an invalid character.

createDocumentFragment

public DocumentFragment createDocumentFragment()
Creates an empty DocumentFragment object.

Specified by:
createDocumentFragment in interface Document
Returns:
A new DocumentFragment.

createTextNode

public Text createTextNode(String data)
Creates a Text node given the specified string.

Specified by:
createTextNode in interface Document
Parameters:
data - The data for the node.
Returns:
The new Text object.

createComment

public Comment createComment(String data)
Creates a Comment node given the specified string.

Specified by:
createComment in interface Document
Parameters:
data - The data for the node.
Returns:
The new Comment object.

createCDATASection

public CDATASection createCDATASection(String data)
                                throws DOMException
Creates a CDATASection node whose value is the specified string.

Specified by:
createCDATASection in interface Document
Parameters:
data - The data for the CDATASection contents.
Returns:
The new CDATASection object.
Throws:
DOMException - NOT_SUPPORTED_ERR: Raised if this document is an HTML document.

createProcessingInstruction

public ProcessingInstruction createProcessingInstruction(String target,
                                                         String data)
                                                  throws DOMException
Creates a ProcessingInstruction node given the specified name and data strings.

Specified by:
createProcessingInstruction in interface Document
Parameters:
target - The target part of the processing instruction.
data - The data for the node.
Returns:
The new ProcessingInstruction object.
Throws:
DOMException - INVALID_CHARACTER_ERR: Raised if an invalid character is specified.
NOT_SUPPORTED_ERR: Raised if this document is an HTML document.

createAttribute

public Attr createAttribute(String name)
                     throws DOMException
Creates an Attr of the given name. Note that the Attr instance can then be set on an Element using the setAttribute method.

Specified by:
createAttribute in interface Document
Parameters:
name - The name of the attribute.
Returns:
A new Attr object.
Throws:
DOMException - INVALID_CHARACTER_ERR: Raised if the specified name contains an invalid character.

createEntityReference

public EntityReference createEntityReference(String name)
                                      throws DOMException
Creates an EntityReference object.

Specified by:
createEntityReference in interface Document
Parameters:
name - The name of the entity to reference.
Returns:
The new EntityReference object.
Throws:
DOMException - INVALID_CHARACTER_ERR: Raised if the specified name contains an invalid character.
NOT_SUPPORTED_ERR: Raised if this document is an HTML document.

getElementsByTagName

public NodeList getElementsByTagName(String tagname)
Returns a NodeList of all the Elements with a given tag name in the order in which they would be encountered in a preorder traversal of the Document tree.

Specified by:
getElementsByTagName in interface Document
Parameters:
tagname - The name of the tag to match on. The special value "*" matches all tags.
Returns:
A new NodeList object containing all the matched Elements.

setDocumentType

public void setDocumentType(DocumentTypeImpl docType)
                     throws DOMException
Set the DocumentType node for this document non-DOM

Parameters:
docType - The DocumentTypeImpl
Throws:
DOMException

createNotation

public Notation createNotation(String name,
                               String publicId,
                               String systemId)
Create a Notation node non-DOM

Parameters:
name - The name of the notation
publicId - The public id of the notation
systemId - The system id of the notation
Returns:
A Notation object

createEntity

public Entity createEntity(String name,
                           String publicId,
                           String systemId,
                           String notationName)
Create an Entity node non-DOM

Parameters:
name - The name of the entity
publicId - The public id of the notation
systemId - The system id of the notation
notationName - For unparsed entities, the name of the notation
Returns:
A Notation object

importNode

public Node importNode(Node importedNode,
                       boolean deep)
                throws DOMException
Imports a node from another document to this document. The returned node has no parent; (parentNode is null). The source node is not altered or removed from the original document; this method creates a new copy of the source node.
For all nodes, importing a node creates a node object owned by the importing document, with attribute values identical to the source node's nodeName and nodeType, plus the attributes related to namespaces (prefix, localName, and namespaceURI). As in the cloneNode operation on a Node, the source node is not altered.
Additional information is copied as appropriate to the 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.
ATTRIBUTE_NODE
The 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.
DOCUMENT_FRAGMENT_NODE
If the deep option was set to true, the descendants of the source element are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Otherwise, this simply generates an empty DocumentFragment.
DOCUMENT_NODE
Document nodes cannot be imported.
DOCUMENT_TYPE_NODE
DocumentType nodes cannot be imported.
ELEMENT_NODE
Specified attribute nodes of the source element are imported, and the generated 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_NODE
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.
ENTITY_REFERENCE_NODE
Only the 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_NODE
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 Notation nodes since they never have any children.
PROCESSING_INSTRUCTION_NODE
The imported node copies its target and data values from those of the source node.
TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
These three types of nodes inheriting from CharacterData copy their data and length attributes from those of the source node.

Specified by:
importNode in interface Document
Parameters:
importedNode - The node to import.
deep - If true, recursively import the subtree under the specified node; if false, import only the node itself, as explained above. This has no effect on Attr , EntityReference, and Notation nodes.
Returns:
The imported node that belongs to this Document.
Throws:
DOMException - NOT_SUPPORTED_ERR: Raised if the type of node being imported is not supported.
Since:
DOM Level 2

createElementNS

public Element createElementNS(String namespaceURI,
                               String qualifiedName)
                        throws DOMException
Creates an element of the given qualified name and namespace URI. HTML-only DOM implementations do not need to implement this method.

Specified by:
createElementNS in interface Document
Parameters:
namespaceURI - The namespace URI of the element to create.
qualifiedName - The qualified name of the element type to instantiate.
Returns:
A new Element object with the following attributes:AttributeValueNode.nodeName qualifiedNameNode.namespaceURI namespaceURINode.prefixprefix, extracted from qualifiedName, or null if there is no prefixNode.localNamelocal name, extracted from qualifiedNameElement.tagName qualifiedName
Throws:
DOMException - INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
NAMESPACE_ERR: Raised if the qualifiedName is malformed, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" .
Since:
DOM Level 2

createAttributeNS

public Attr createAttributeNS(String namespaceURI,
                              String qualifiedName)
                       throws DOMException
Creates an attribute of the given qualified name and namespace URI. HTML-only DOM implementations do not need to implement this method.

Specified by:
createAttributeNS in interface Document
Parameters:
namespaceURI - The namespace URI of the attribute to create.
qualifiedName - The qualified name of the attribute to instantiate.
Returns:
A new Attr object with the following attributes: AttributeValueNode.nodeNamequalifiedName Node.namespaceURInamespaceURI Node.prefixprefix, extracted from qualifiedName, or null if there is no prefixNode.localNamelocal name, extracted from qualifiedNameAttr.name qualifiedNameNode.nodeValuethe empty string
Throws:
DOMException - INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
NAMESPACE_ERR: Raised if the qualifiedName is malformed, if the qualifiedName has a prefix and the namespaceURI is null, if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace", or if the qualifiedName is "xmlns" and the namespaceURI is different from " http://www.w3.org/2000/xmlns/".
Since:
DOM Level 2

getElementsByTagNameNS

public NodeList getElementsByTagNameNS(String namespaceURI,
                                       String localName)
Returns a NodeList of all the Elements with a given local name and namespace URI in the order in which they are encountered in a preorder traversal of the Document tree.

Specified by:
getElementsByTagNameNS in interface Document
Parameters:
namespaceURI - The namespace URI of the elements to match on. The special value "*" matches all namespaces.
localName - The local name of the elements to match on. The special value "*" matches all local names.
Returns:
A new NodeList object containing all the matched Elements.
Since:
DOM Level 2

getElementById

public Element getElementById(String elementId)
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. 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 interface Document
Parameters:
elementId - The unique id value for an element.
Returns:
The matching element.
Since:
DOM Level 2

createNamespaceNode

public NamespaceImpl createNamespaceNode(String prefix,
                                         String uri)
Create a namespace node non-DOM

Parameters:
prefix - The namespace prefix (name of namespace node)
uri - The namespace uri (value of namespace node)
Returns:
A NamespaceImpl instance

lock

public void lock()
Lock this document tree against modification non-DOM


unlock

public void unlock()
Unlock this document tree for modification non-DOM


isLocked

public boolean isLocked()
Return if document tree is locked non-DOM

Returns:
True if document tree is locked

setCheckNames

public void setCheckNames(boolean enable)
Set whether to enable name checking for this document. If enabled, DOMException.INVALID_CHARACTER_ERR exceptions may be thrown.

Parameters:
enable - True if name checking should be enabled, false otherwise (true is the default)

setSmartNS

public void setSmartNS(boolean enable)
Set whether to enable smart namespace support. In a nutshell, smart namespace support causes DOM Level 2 API's to work as if all element and attribute nodes were created with namespace aware API's

Parameters:
enable - true if smart namespace support should be enabled, false otherwise (true is the default, even though that makes us non-compliant, it makes us interoperability work better when you have no way of knowing how the source document was created)

getSmartNS

public boolean getSmartNS()
Get smart namespace support enabled flag

Returns:
true if smart namespace support is enabled, false otherwise

isOrderCurrent

public boolean isOrderCurrent()
Return true if document order information in the document tree is current. If it is not current, it can be updated with a call to updateDocumentOrder()

Returns:
true if document order information is current in the document tree.

setOrderCurrent

public void setOrderCurrent(boolean orderIsCurrent)
Set the order state. This is useful is the document order information is set using a method other than updateDocumentOrder() (at tree creation time, for example using NodeImpl.setDocumentOrder())

Parameters:
orderIsCurrent - true if document order information is current, false otherwise

updateDocumentOrder

public void updateDocumentOrder()
Setup the document order information if it has not been set, or has been invalidated by changes to the tree. This does a complete preorder traversal of the tree, so it should be used conservatively.


newDocument

public static DocumentImpl newDocument()
Factory method to create a new document

Returns:
A new DocumentImpl object

addId

public void addId(ElementImpl element,
                  String id)
Add an element to the id table non-DOM

Parameters:
element - The ElementImpl object to map by id
id - The string id value

removeId

public void removeId(String id)
Remove an element from the id table non-DOM

Parameters:
id - The id value to remove from the table

findElementById

public ElementImpl findElementById(String id)
Look up an element by it's id non-DOM

Parameters:
id - The id value for the element
Returns:
The ElementImpl object, if found, null otherwise

checkNames

protected boolean checkNames()
Return true if name checking is enabled

Returns:
true if name checking is enabled

constructMessage

public static String constructMessage(String key,
                                      Object[] parms)
Construct a message from a format message in the properties file and an array of parameters

Parameters:
key - The key of the message format string in the properties file
parms - The parameters for the message format string