PHP 8.1.0 Released!

DOMImplementation::createDocumentType

(PHP 5, PHP 7, PHP 8)

DOMImplementation::createDocumentType Создаёт пустой объект класса DOMDocumentType

Описание

public DOMImplementation::createDocumentType(string $qualifiedName, string $publicId = "", string $systemId = ""): DOMDocumentType|false

Создаёт пустой объект класса DOMDocumentType. Объявления сущностей и обозначения будут недоступны. Ссылки на сущности не будут заменяться и добавления атрибутов по умолчанию не будут происходить.

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

qualifiedName

Квалифицированное имя типа документа для создания.

publicId

Общедоступный идентификатор внешнего подмножества.

systemId

Системный идентификатор внешнего подмножества.

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

Новый объект класса DOMDocumentType с атрибутом ownerDocument, установленным в null.

Ошибки

DOM_NAMESPACE_ERR

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

До PHP 8.0.0 метод может вызываться статически, но вызовет ошибку E_DEPRECATED. Начиная с PHP 8.0.0, вызов этого метода статически выбрасывает исключение Error.

Примеры

Пример #1 Создание документа с прикреплённым DTD

<?php

// Создаёт экземпляр класса DOMImplementation
$imp = new DOMImplementation;

// Создаёт экземпляр класса DOMDocumentType
$dtd $imp->createDocumentType('graph''''graph.dtd');

// Создаёт объект DOMDocument
$dom $imp->createDocument(""""$dtd);

// Установка других параметров
$dom->encoding 'UTF-8';
$dom->standalone false;

// Создание пустого элемента
$element $dom->createElement('graph');

// Добавление элемента
$dom->appendChild($element);

// Получение и печать документа
echo $dom->saveXML();

?>

Результат выполнения данного примера:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE graph SYSTEM "graph.dtd">
<graph/>

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

add a note add a note

User Contributed Notes 1 note

up
0
until-all-bytes-are-free at example dot org
10 years ago
I had problems to use a DTD from a file. It needed to be resolved relatively and it contained characters that made DomDocument failed to resolve the file.

Encoding and an absolute filename did not help much. So I used the data:// streamwrapper ( http://php.net/manual/en/wrappers.data.php ) as a work-around:

<?php

// relative or absolute filename
$path = '...';

// convert file contents into a filename
$data = file_get_contents($path);
$systemId = 'data://text/plain;base64,'.base64_encode($data);

// ...

// Creates a DOMDocumentType instance
$dtd = $aImp->createDocumentType('qualified name', '', $systemId);

?>

Works like a charm.
To Top