## org.apache.xerces.dom
Class DocumentTypeImpl

    java.lang.Object
      |
      +--org.apache.xerces.dom.NodeImpl
            |
            +--org.apache.xerces.dom.ChildNode
                  |
                  +--org.apache.xerces.dom.ParentNode
                        |
                        +--org.apache.xerces.dom.DocumentTypeImpl

All Implemented Interfaces:
  java.lang.Cloneable, org.w3c.dom.DocumentType, org.w3c.dom.events.EventTarget, org.w3c.dom.Node, org.w3c.dom.NodeList, java.io.Serializable

Direct Known Subclasses:
  DeferredDocumentTypeImpl

public class DocumentTypeImpl
extends ParentNode
implements org.w3c.dom.DocumentType

This class represents a Document Type declaraction in the document itself, not a Document Type Definition (DTD). An XML document may (or may not) have such a reference.

DocumentType is an Extended DOM feature, used in XML documents but not in HTML.

Note that Entities and Notations are no longer children of the DocumentType, but are parentless nodes hung only in their appropriate NamedNodeMaps.

This area is UNDERSPECIFIED IN REC-DOM-Level-1-19981001 Most notably, absolutely no provision was made for storing and using Element and Attribute information. Nor was the linkage between Entities and Entity References nailed down solidly.

# INTERNAL:

  Usage of this class is not supported. It may be altered or removed at any time.

Since:
  PR-DOM-Level-1-19980818.
Version:
  $Id: DocumentTypeImpl.java 699892 2008-09-28 21:08:27Z mrglavas $
Author:
  Arnaud Le Hors, IBM, Joe Kesselman, IBM, Andy Clark, IBM
See Also:
  Serialized Form

Field Summary
`protected NamedNodeMapImpl` `elements` Elements.
`protected NamedNodeMapImpl` `entities` Entities.
`protected java.lang.String` `internalSubset`
`protected java.lang.String` `name` Document type name.
`protected NamedNodeMapImpl` `notations` Notations.
`protected java.lang.String` `publicID`
`protected java.lang.String` `systemID`

Fields inherited from class org.apache.xerces.dom.ParentNode
`firstChild, fNodeListCache, ownerDocument`

Fields inherited from class org.apache.xerces.dom.ChildNode
`nextSibling, previousSibling`

Fields inherited from class org.apache.xerces.dom.NodeImpl

`DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_IS_CONTAINED, DOCUMENT_POSITION_PRECEDING, ELEMENT_DEFINITION_NODE, FIRSTCHILD, flags, HASSTRING, ID, IGNORABLEWS, NORMALIZED, OWNED, ownerNode, READONLY, SPECIFIED, SYNCCHILDREN, SYNCDATA, TREE_POSITION_ANCESTOR, TREE_POSITION_DESCENDANT, TREE_POSITION_DISCONNECTED, TREE_POSITION_EQUIVALENT, TREE_POSITION_FOLLOWING, TREE_POSITION_PRECEDING, TREE_POSITION_SAME_NODE`

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
`DocumentTypeImpl(CoreDocumentImpl ownerDocument, java.lang.String name)` Factory method for creating a document type node.
`DocumentTypeImpl(CoreDocumentImpl ownerDocument, java.lang.String qualifiedName, java.lang.String publicID, java.lang.String systemID)` Factory method for creating a document type node.

Method Summary
`org.w3c.dom.Node` `cloneNode(boolean deep)` Clones the node.
`org.w3c.dom.NamedNodeMap` `getElements()` NON-DOM: Access the collection of ElementDefinitions.
`org.w3c.dom.NamedNodeMap` `getEntities()` Access the collection of general Entities, both external and internal, defined in the DTD.
`java.lang.String` `getInternalSubset()` Introduced in DOM Level 2.
`java.lang.String` `getName()` Name of this document type.
`java.lang.String` `getNodeName()` Returns the document type name
`protected int` `getNodeNumber()` NON-DOM Get the number associated with this doctype.
`short` `getNodeType()` A short integer indicating what type of node this is.
`org.w3c.dom.NamedNodeMap` `getNotations()` Access the collection of Notations defined in the DTD.
`java.lang.String` `getPublicId()` Introduced in DOM Level 2.
`java.lang.String` `getSystemId()` Introduced in DOM Level 2.
`java.lang.String` `getTextContent()` This attribute returns the text content of this node and its descendants.
`java.lang.Object` `getUserData(java.lang.String key)` Retrieves the object associated to a key on a this node.
`protected java.util.Hashtable` `getUserDataRecord()`
`boolean` `isEqualNode(org.w3c.dom.Node arg)` DOM Level 3 WD- Experimental.
`void` `setInternalSubset(java.lang.String internalSubset)` NON-DOM.
`protected void` `setOwnerDocument(CoreDocumentImpl doc)` NON-DOM set the ownerDocument of this node and its children
`void` `setReadOnly(boolean readOnly, boolean deep)` NON-DOM: Subclassed to flip the entities' and notations' readonly switch as well.
`void` `setTextContent(java.lang.String textContent)` This attribute returns the text content of this node and its descendants.
`java.lang.Object` `setUserData(java.lang.String key, java.lang.Object data, org.w3c.dom.UserDataHandler handler)` Associate an object to a key on this node.

Methods inherited from class org.apache.xerces.dom.ParentNode
`getChildNodes, getChildNodesUnoptimized, getFirstChild, getLastChild, getLength, getOwnerDocument, hasChildNodes, insertBefore, item, normalize, removeChild, replaceChild, synchronizeChildren`

Methods inherited from class org.apache.xerces.dom.ChildNode
`getNextSibling, getParentNode, getPreviousSibling`

Methods inherited from class org.apache.xerces.dom.NodeImpl

`addEventListener, appendChild, changed, changes, compareDocumentPosition, compareTreePosition, dispatchEvent, getAttributes, getBaseURI, getContainer, getFeature, getLocalName, getNamespaceURI, getNodeValue, getPrefix, getReadOnly, getUserData, hasAttributes, isDefaultNamespace, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, needsSyncChildren, removeEventListener, setNodeValue, setPrefix, setUserData, synchronizeData, 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, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix`

Field Detail

### name

    protected java.lang.String name

  Document type name.

### entities

    protected NamedNodeMapImpl entities

  Entities.

### notations

    protected NamedNodeMapImpl notations

  Notations.

### elements

    protected NamedNodeMapImpl elements

  Elements.

### publicID

    protected java.lang.String publicID

### systemID

    protected java.lang.String systemID

### internalSubset

    protected java.lang.String internalSubset

Constructor Detail

### DocumentTypeImpl

    public DocumentTypeImpl(CoreDocumentImpl ownerDocument,
                            java.lang.String name)

  Factory method for creating a document type node.

### DocumentTypeImpl

    public DocumentTypeImpl(CoreDocumentImpl ownerDocument,
                            java.lang.String qualifiedName,
                            java.lang.String publicID,
                            java.lang.String systemID)

  Factory method for creating a document type node.

Method Detail

### getPublicId

    public java.lang.String getPublicId()

  Introduced in DOM Level 2.

  Return the public identifier of this Document type.

  Specified by:
    `getPublicId` in interface `org.w3c.dom.DocumentType`
  Since:
    WD-DOM-Level-2-19990923

### getSystemId

    public java.lang.String getSystemId()

  Introduced in DOM Level 2.

  Return the system identifier of this Document type.

  Specified by:
    `getSystemId` in interface `org.w3c.dom.DocumentType`
  Since:
    WD-DOM-Level-2-19990923

### setInternalSubset

    public void setInternalSubset(java.lang.String internalSubset)

  NON-DOM.

  Set the internalSubset given as a string.

### getInternalSubset

    public java.lang.String getInternalSubset()

  Introduced in DOM Level 2.

  Return the internalSubset given as a string.

  Specified by:
    `getInternalSubset` in interface `org.w3c.dom.DocumentType`
  Since:
    WD-DOM-Level-2-19990923

### getNodeType

    public short getNodeType()

  A short integer indicating what type of node this is. The named constants for this value are defined in the org.w3c.dom.Node interface.
  Specified by:
    `getNodeType` in interface `org.w3c.dom.Node`
  Overrides:
    `getNodeType` in class `NodeImpl`

### getNodeName

    public java.lang.String getNodeName()

  Returns the document type name
  Specified by:
    `getNodeName` in interface `org.w3c.dom.Node`
  Overrides:
    `getNodeName` in class `NodeImpl`

### cloneNode

    public org.w3c.dom.Node cloneNode(boolean deep)

  Clones the node.
  Specified by:
    `cloneNode` in interface `org.w3c.dom.Node`
  Overrides:
    `cloneNode` in class `ParentNode`
  Following copied from interface: `org.w3c.dom.Node`
  Parameters:
    `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`).
  Returns:
    The duplicate node.

### getTextContent

    public java.lang.String getTextContent()
                                    throws org.w3c.dom.DOMException

  Description copied from interface: `org.w3c.dom.Node`
  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

  Specified by:
    `getTextContent` in interface `org.w3c.dom.Node`
  Overrides:
    `getTextContent` in class `ParentNode`
  Following copied from interface: `org.w3c.dom.Node`
  Throws:
    `org.w3c.dom.DOMException` - DOMSTRING_SIZE_ERR: Raised when it would return more characters than fit in a `DOMString` variable on the implementation platform.

### setTextContent

    public void setTextContent(java.lang.String textContent)
                        throws org.w3c.dom.DOMException

  Description copied from interface: `org.w3c.dom.Node`
  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

  Specified by:
    `setTextContent` in interface `org.w3c.dom.Node`
  Overrides:
    `setTextContent` in class `ParentNode`
  Following copied from interface: `org.w3c.dom.Node`
  Throws:
    `org.w3c.dom.DOMException` - NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.

### isEqualNode

    public boolean isEqualNode(org.w3c.dom.Node arg)

  DOM Level 3 WD- Experimental. Override inherited behavior from ParentNodeImpl to support deep equal.
  Specified by:
    `isEqualNode` in interface `org.w3c.dom.Node`
  Overrides:
    `isEqualNode` in class `ParentNode`
  Following copied from interface: `org.w3c.dom.Node`
  Parameters:
    `arg` - The node to compare equality with.
  Returns:
    Returns `true` if the nodes are equal, `false` otherwise.

### setOwnerDocument

    protected void setOwnerDocument(CoreDocumentImpl doc)

  NON-DOM set the ownerDocument of this node and its children
  Overrides:
    `setOwnerDocument` in class `ParentNode`

### getNodeNumber

    protected int getNodeNumber()

  NON-DOM Get the number associated with this doctype.
  Overrides:
    `getNodeNumber` in class `NodeImpl`

### getName

    public java.lang.String getName()

  Name of this document type. If we loaded from a DTD, this should be the name immediately following the DOCTYPE keyword.
  Specified by:
    `getName` in interface `org.w3c.dom.DocumentType`

### getEntities

    public org.w3c.dom.NamedNodeMap getEntities()

  Access the collection of general Entities, both external and internal, defined in the DTD. For example, in:

         <!doctype example SYSTEM "ex.dtd" [
           <!ENTITY foo "foo">
           <!ENTITY bar "bar">
           <!ENTITY % baz "baz">
           ]>

  The Entities map includes foo and bar, but not baz. It is promised that only Nodes which are Entities will exist in this NamedNodeMap.

  For HTML, this will always be null.

  Note that "built in" entities such as & and < should be converted to their actual characters before being placed in the DOM's contained text, and should be converted back when the DOM is rendered as XML or HTML, and hence DO NOT appear here.

  Specified by:
    `getEntities` in interface `org.w3c.dom.DocumentType`

### getNotations

    public org.w3c.dom.NamedNodeMap getNotations()

  Access the collection of Notations defined in the DTD. A notation declares, by name, the format of an XML unparsed entity or is used to formally declare a Processing Instruction target.
  Specified by:
    `getNotations` in interface `org.w3c.dom.DocumentType`

### setReadOnly

    public void setReadOnly(boolean readOnly,
                            boolean deep)

  NON-DOM: Subclassed to flip the entities' and notations' readonly switch as well.
  Overrides:
    `setReadOnly` in class `ParentNode`
  See Also:
    `NodeImpl.setReadOnly(boolean, boolean)`

### getElements

    public org.w3c.dom.NamedNodeMap getElements()

  NON-DOM: Access the collection of ElementDefinitions.
  See Also:
    `ElementDefinitionImpl`

### setUserData

    public java.lang.Object setUserData(java.lang.String key,
                                        java.lang.Object data,
                                        org.w3c.dom.UserDataHandler handler)

  Description copied from interface: `org.w3c.dom.Node`
  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.
  Specified by:
    `setUserData` in interface `org.w3c.dom.Node`
  Overrides:
    `setUserData` in class `NodeImpl`
  Following copied from interface: `org.w3c.dom.Node`
  Parameters:
    `key` - The key to associate the object to.
    `data` - The object to associate to the given key, or `null` to remove any existing association to that key.
    `handler` - The handler to associate to that key, or `null`.
  Returns:
    Returns the `DOMUserData` previously associated to the given key on this node, or `null` if there was none.

### getUserData

    public java.lang.Object getUserData(java.lang.String key)

  Description copied from interface: `org.w3c.dom.Node`
  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.
  Specified by:
    `getUserData` in interface `org.w3c.dom.Node`
  Overrides:
    `getUserData` in class `NodeImpl`
  Following copied from interface: `org.w3c.dom.Node`
  Parameters:
    `key` - The key the object is associated to.
  Returns:
    Returns the `DOMUserData` associated to the given key on this node, or `null` if there was none.

### getUserDataRecord

    protected java.util.Hashtable getUserDataRecord()

  Overrides:
    `getUserDataRecord` in class `NodeImpl`

Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.