# Interface DOMImplementation

All Known Subinterfaces:
  `DOMImplementationCSS, HTMLDOMImplementation`

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.

Since:
  1.4, DOM Level 2

## Method Summary

Modifier and Type
Method
Description
`Document`
`createDocument(String namespaceURI, String qualifiedName, DocumentType doctype)`
Creates a DOM Document object of the specified type with its document element.
`DocumentType`
`createDocumentType(String qualifiedName, String publicId, String systemId)`
Creates an empty `DocumentType` node.
`Object`
`getFeature(String feature, String version)`
This method returns a specialized object which implements the specialized APIs of the specified feature and version, as specified in DOM Features.
`boolean`
`hasFeature(String feature, String version)`
Test if the DOM implementation implements a specific feature and version, as specified in DOM Features.

## Method Details

### hasFeature

boolean hasFeature(String feature, String version)
Test if the DOM implementation implements a specific feature and version, as specified in DOM Features.

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.

### createDocumentType

DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) throws DOMException
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` - INVALID_CHARACTER_ERR: Raised if the specified qualified name is not an XML name according to [XML 1.0].
  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]).
Since:
  1.4, DOM Level 2

### createDocument

Document createDocument(String namespaceURI, String qualifiedName, DocumentType doctype) throws DOMException
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] . 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] , 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` - INVALID_CHARACTER_ERR: Raised if the specified qualified name is not an XML name according to [XML 1.0].
  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] , 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]).
Since:
  1.4, DOM Level 2

### getFeature

Object getFeature(String feature, String version)
This method returns a specialized object which implements the specialized APIs of the specified feature and version, as specified in DOM Features. 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.
Since:
  1.5, DOM Level 3