# DOMImplementation

public interface **DOMImplementation** The `DOMImplementation` interface provides a number of methods
for performing operations that are independent of any particular instance
of the document object model.

See also the [Document Object Model (DOM) Level 3 Core Specification](http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407).

### Public Method Summary

|---|---|
| abstract [Document](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/Document.html) | [createDocument](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DOMImplementation.html#createDocument(java.lang.String,%20java.lang.String,%20org.w3c.dom.DocumentType))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) namespaceURI, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) qualifiedName, [DocumentType](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DocumentType.html) doctype) Creates a DOM Document object of the specified type with its document element. |
| abstract [DocumentType](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DocumentType.html) | [createDocumentType](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DOMImplementation.html#createDocumentType(java.lang.String,%20java.lang.String,%20java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) qualifiedName, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) publicId, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) systemId) Creates an empty `DocumentType` node. |
| abstract [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [getFeature](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DOMImplementation.html#getFeature(java.lang.String,%20java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) feature, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) version) This method returns a specialized object which implements the specialized APIs of the specified feature and version, as specified in . |
| abstract boolean | [hasFeature](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DOMImplementation.html#hasFeature(java.lang.String,%20java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) feature, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) version) Test if the DOM implementation implements a specific feature and version, as specified in . |

## Public Methods

#### public abstract [Document](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/Document.html)
**createDocument**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) namespaceURI, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) qualifiedName, [DocumentType](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DocumentType.html) doctype)

Creates a DOM Document object of the specified type with its document
element.

Note that based on the `DocumentType` given to create
the document, the implementation may instantiate specialized
`Document` objects that support additional features than
the "Core", such as "HTML" \[[DOM Level 2 HTML](http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109)\]
. On the other hand, setting the `DocumentType` after the
document was created makes this very unlikely to happen.
Alternatively, specialized `Document` creation methods,
such as `createHTMLDocument` \[[DOM Level 2 HTML](http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109)\]
, can be used to obtain specific types of `Document`
objects.

##### Parameters

| namespaceURI | The namespace URI of the document element to create or `null`. |
| qualifiedName | The qualified name of the document element to be created or `null`. |
| doctype | The type of document to be created or `null`. When `doctype` is not `null`, its `Node.ownerDocument` attribute is set to the document being created. |
|---|---|

##### Returns

- A new `Document` object with its document element. If the `NamespaceURI`, `qualifiedName`, and `doctype` are `null`, the returned `Document` is empty with no document element.

##### Throws

| [DOMException](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DOMException.html) | INVALID_CHARACTER_ERR: Raised if the specified qualified name is not an XML name according to \[[XML 1.0](http://www.w3.org/TR/2004/REC-xml-20040204)\]. NAMESPACE_ERR: Raised if the `qualifiedName` is malformed, if the `qualifiedName` has a prefix and the `namespaceURI` is `null`, or if the `qualifiedName` is `null` and the `namespaceURI` is different from `null`, or if the `qualifiedName` has a prefix that is "xml" and the `namespaceURI` is different from "<http://www.w3.org/XML/1998/namespace>" \[[XML Namespaces](http://www.w3.org/TR/1999/REC-xml-names-19990114/)\] , or if the DOM implementation does not support the `"XML"` feature but a non-null namespace URI was provided, since namespaces were defined by XML. WRONG_DOCUMENT_ERR: Raised if `doctype` has already been used with a different document or was created from a different implementation. NOT_SUPPORTED_ERR: May be raised if the implementation does not support the feature "XML" and the language exposed through the Document does not support XML Namespaces (such as \[[HTML 4.01](http://www.w3.org/TR/1999/REC-html401-19991224/)\]). |
|---|---|

#### public abstract [DocumentType](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DocumentType.html)
**createDocumentType**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) qualifiedName, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) publicId, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) systemId)

Creates an empty `DocumentType` node. Entity declarations
and notations are not made available. Entity reference expansions and
default attribute additions do not occur..

##### Parameters

| qualifiedName | The qualified name of the document type to be created. |
| publicId | The external subset public identifier. |
| systemId | The external subset system identifier. |
|---|---|

##### Returns

- A new `DocumentType` node with `Node.ownerDocument` set to `null`.

##### Throws

| [DOMException](https://developers.google.com/j2objc/javadoc/jre/reference/org/w3c/dom/DOMException.html) | INVALID_CHARACTER_ERR: Raised if the specified qualified name is not an XML name according to \[[XML 1.0](http://www.w3.org/TR/2004/REC-xml-20040204)\]. NAMESPACE_ERR: Raised if the `qualifiedName` is malformed. NOT_SUPPORTED_ERR: May be raised if the implementation does not support the feature "XML" and the language exposed through the Document does not support XML Namespaces (such as \[[HTML 4.01](http://www.w3.org/TR/1999/REC-html401-19991224/)\]). |
|---|---|

#### public abstract [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)
**getFeature**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) feature, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) version)

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
`DOMImplementation` interface.

##### Parameters

| 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. |
| version | This is the version number of the feature to test. |
|---|---|

##### Returns

- 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 `DOMImplementation` interface, it must delegate to the primary core `DOMImplementation` and not return results inconsistent with the primary core `DOMImplementation` such as `hasFeature`, `getFeature`, etc.

#### public abstract boolean
**hasFeature**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) feature, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) version)

Test if the DOM implementation implements a specific feature and
version, as specified in .

##### Parameters

| feature | The name of the feature to test. |
| version | This is the version number of the feature to test. |
|---|---|

##### Returns

- `true` if the feature is implemented in the specified version, `false` otherwise.