CakeFest 2024: The Official CakePHP Conference

DOMImplementation::createDocument

(PHP 5, PHP 7, PHP 8)

DOMImplementation::createDocument Создаёт объект класса DOMDocument заданного типа с его элементом document

Описание

public DOMImplementation::createDocument(?string $namespace = null, string $qualifiedName = "", ?DOMDocumentType $doctype = null): DOMDocument|false

Создаёт объект класса DOMDocument заданного типа с его элементом document.

Список параметров

namespace

URI пространства имён создаваемого элемента document.

qualifiedName

Квалифицированное имя создаваемого элемента document.

doctype

Тип создаваемого элемента document или null.

Возвращаемые значения

Новый объект класса DOMDocument или false в случае возникновения ошибки. Если аргументы namespace, qualifiedName, и doctype имеют значение null, возвращаемый объект DOMDocument будет пустым и без элемента document.

Ошибки

DOM_WRONG_DOCUMENT_ERR

Возникает, если аргумент doctype уже использовался с другим документом или был создан в другой реализации.

DOM_NAMESPACE_ERR

Возникает, если обнаружена ошибка в строках namespace и qualifiedName.

Список изменений

Версия Описание
8.0.3 namespace теперь допускает значение null.
8.0.0 doctype теперь допускает значение null.
8.0.0 При статическом вызове функции теперь будет выбрасываться ошибка Error. Ранее выдавалась ошибка уровня E_DEPRECATED.

Смотрите также

add a note

User Contributed Notes 3 notes

up
7
eboyjr
13 years ago
To add on to the other example, here's how to create an XHTML 1.0 transitional document with head, title, and body elements.

<?php

$document
= DOMImplementation::createDocument(null, 'html',
DOMImplementation::createDocumentType("html",
"-//W3C//DTD XHTML 1.0 Transitional//EN",
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"));
$document->formatOutput = true;

$html = $document->documentElement;
$head = $document->createElement('head');
$title = $document->createElement('title');
$text = $document->createTextNode('Title of Page');
$body = $document->createElement('body');

$title->appendChild($text);
$head->appendChild($title);
$html->appendChild($head);
$html->appendChild($body);

echo
$document->saveXML();
?>

This outputs: (http links removed due to spam)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "doctype.dtd">
<html xmlns="w3org1999xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Title of Page</title>
</head>
<body></body>
</html>

Note the saveXML function. If saveHTML was used instead, you get the output:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "doctype.dtd">
<html>
<head><title>Title of Page</title></head>
<body></body>
</html>
up
2
arturm at union dot com dot pl
17 years ago
To create HTML document with doctype:

<?php
$doctype
= DOMImplementation::createDocumentType("html",
"-//W3C//DTD HTML 4.01//EN",
"http://www.w3.org/TR/html4/strict.dtd");
$doc = DOMImplementation::createDocument(null, 'html', $doctype);
?>
up
0
sleistico at gmail dot com
5 years ago
I just recently got an error, having to do with deprecation, by using the type of calls in the other example listed here. What I had to do instead looks like this...

$htmldoc = (new DOMImplementation)->createDocument(null, 'html', (new DOMImplementation)->createDocumentType("html"));

This creates a document with <!DOCTYPE html> at the top of it.
To Top