International PHP Conference Berlin 2025

DOMImplementation::createDocumentType

(PHP 5, PHP 7, PHP 8)

DOMImplementation::createDocumentType Cria um objeto DOMDocumentType vazio

Descrição

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

Cria um objeto DOMDocumentType vazio. Declarações de entidade e notações não são disponibilizadas. Expansões de referências de entidade e adições de atributos padrão não ocorrem.

Parâmetros

qualifiedName

O nome qualificado do tipo de documento a ser criado.

publicId

O identificador público do conjunto externo.

systemId

O identificador do sistema do conjunto externo.

Valor Retornado

Um novo nó DOMDocumentType com seu ownerDocument definido como null ou false em caso de erro.

Erros/Exceções

DOM_NAMESPACE_ERR

Gerado se houver um erro com o namespace, conforme determinado por qualifiedName.

Registro de Alterações

Versão Descrição
8.0.0 Chamar esta função estaticamente agora lançará um Error. Anteriormente, era gerado um E_DEPRECATED.

Exemplos

Exemplo #1 Criando um documento com um DTD anexado

<?php

// Cria uma instância da classe DOMImplementation
$imp = new DOMImplementation;

// Cria uma instância DOMDocumentType
$dtd = $imp->createDocumentType('graph', '', 'graph.dtd');

// Cria uma instância DOMDocument
$dom = $imp->createDocument("", "", $dtd);

// Define outras propriedades
$dom->encoding = 'UTF-8';
$dom->standalone = false;

// Cria um elemento vazio
$element = $dom->createElement('graph');

// Anexa o elemento
$dom->appendChild($element);

// Recupera e imprime o documento
echo $dom->saveXML();

?>

O exemplo acima produzirá:

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

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
0
until-all-bytes-are-free at example dot org
13 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