# phpman > man > XML::DOM::Document(3pm)

## NAME
    [XML::DOM::Document](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ADocument/markdown) - An XML document node in [XML::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM/markdown)

## DESCRIPTION
    [XML::DOM::Document](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ADocument/markdown) extends [XML::DOM::Node](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ANode/markdown).

    It is the main root of the XML document structure as returned by [XML::DOM::Parser::parse](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3AParser%3A%3Aparse/markdown) and
    [XML::DOM::Parser::parsefile](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3AParser%3A%3Aparsefile/markdown).

    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 getOwnerDocument method which associates them
    with the Document within whose context they were created.

  METHODS
    getDocumentElement
        This is a convenience method that allows direct access to the child node that is the root
        Element of the document.

    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 undef.
        The DOM Level 1 does not support editing the Document Type Declaration.

        Not In DOM Spec: This implementation allows editing the doctype. See
        *[XML::DOM::ignoreReadOnly](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3AignoreReadOnly/markdown)* for details.

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

    createElement (tagName)
        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.

        DOMExceptions:

        *   INVALID_CHARACTER_ERR

            Raised if the tagName does not conform to the XML spec.

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

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

    createCDATASection (data)
        Creates a CDATASection node given the specified string.

    createAttribute (name [, value [, specified ]])
        Creates an Attr of the given name. Note that the Attr instance can then be set on an Element
        using the setAttribute method.

        Not In DOM Spec: The DOM Spec does not allow passing the value or the specified property in
        this method. In this implementation they are optional.

        Parameters: *value* The attribute's value. See [Attr::setValue](https://www.chedong.com/phpMan.php/perldoc/Attr%3A%3AsetValue/markdown) for details. If the value is
        not supplied, the specified property is set to 0. *specified* Whether the attribute value
        was specified or whether the default value was used. If not supplied, it's assumed to be 1.

        DOMExceptions:

        *   INVALID_CHARACTER_ERR

            Raised if the name does not conform to the XML spec.

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

        Parameters: *target* The target part of the processing instruction. *data* The data for the
        node.

        DOMExceptions:

        *   INVALID_CHARACTER_ERR

            Raised if the target does not conform to the XML spec.

    createDocumentFragment
        Creates an empty DocumentFragment object.

    createEntityReference (name)
        Creates an EntityReference object.

### Additional methods not in the DOM Spec
    getXMLDecl and setXMLDecl (xmlDecl)
        Returns the XMLDecl for this Document or undef if none was specified. Note that XMLDecl is
        not part of the list of child nodes.

    setDoctype (doctype)
        Sets or replaces the DocumentType. NOTE: Don't use appendChild or insertBefore to set the
        DocumentType. Even though doctype will be part of the list of child nodes, it is handled
        specially.

    getDefaultAttrValue (elem, attr)
        Returns the default attribute value as a string or undef, if none is available.

        Parameters: *elem* The element tagName. *attr* The attribute name.

    getEntity (name)
        Returns the Entity with the specified name.

    createXMLDecl (version, encoding, standalone)
        Creates an XMLDecl object. All parameters may be undefined.

    createDocumentType (name, sysId, pubId)
        Creates a DocumentType object. SysId and pubId may be undefined.

    createNotation (name, base, sysId, pubId)
        Creates a new Notation object. Consider using [XML::DOM::DocumentType::addNotation](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ADocumentType%3A%3AaddNotation/markdown)!

    createEntity (parameter, notationName, value, sysId, pubId, ndata)
        Creates an Entity object. Consider using [XML::DOM::DocumentType::addEntity](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ADocumentType%3A%3AaddEntity/markdown)!

    createElementDecl (name, model)
        Creates an ElementDecl object.

        DOMExceptions:

        *   INVALID_CHARACTER_ERR

            Raised if the element name (tagName) does not conform to the XML spec.

    createAttlistDecl (name)
        Creates an AttlistDecl object.

        DOMExceptions:

        *   INVALID_CHARACTER_ERR

            Raised if the element name (tagName) does not conform to the XML spec.

    expandEntity (entity [, parameter])
        Expands the specified entity or parameter entity (if parameter=1) and returns its value as a
        string, or undef if the entity does not exist. (The entity name should not contain the '%',
        '&' or ';' delimiters.)

    check ( [$checker] )
        Uses the specified [XML::Checker](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AChecker/markdown) to validate the document. If no [XML::Checker](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AChecker/markdown) is supplied, a
        new [XML::Checker](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AChecker/markdown) is created. See [XML::Checker](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AChecker/markdown) for details.

    check_sax ( [$checker] )
        Similar to check() except it uses the SAX interface to [XML::Checker](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AChecker/markdown) instead of the expat
        interface. This method may disappear or replace check() at some time.

    createChecker ()
        Creates an [XML::Checker](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AChecker/markdown) based on the document's DTD. The $checker can be reused to check any
        elements within the document. Create a new [XML::Checker](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AChecker/markdown) whenever the DOCTYPE section of the
        document is altered!

