DOMImplementation::createDocumentType

(PHP 5, PHP 7, PHP 8)

DOMImplementation::createDocumentType Crear un objeto DOMDocumentType vacío

Descripción

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

Crea un objeto DOMDocumentType vacío. Las declaraciones de entidades y las notaciones no están disponibles. Las expansiones de referencias de entidades y la adición de atributos por defecto no ocurren.

Parámetros

qualifiedName

El nombre cualificado del tipo de documente a crear.

publicId

El identificador público del subconjunto externo.

systemId

El identificador de sistema del subconjunto externo.

Valores devueltos

A new DOMDocumentType node with its ownerDocument set to null or false on error.

Errores/Excepciones

DOM_NAMESPACE_ERR

Se produce si hay un error con el espacio de nombres, como determina qualifiedName.

Historial de cambios

Versión Descripción
8.0.0 Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.

Ejemplos

Ejemplo #1 Crear un documento con un DTD adjunto

<?php

// Crear una instancia de la clase DOMImplementation
$imp = new DOMImplementation;

// Crear una instancia de DOMDocumentType
$dtd = $imp->createDocumentType('graph', '', 'graph.dtd');

// Crear una instancia de DOMDocument
$dom = $imp->createDocument("", "", $dtd);

// Establecer otras propiedades
$dom->encoding = 'UTF-8';
$dom->standalone = false;

// Crear un elemento vacío
$element = $dom->createElement('graph');

// Añadir el elemento
$dom->appendChild($element);

// Retrieve and print the document
echo $dom->saveXML();

?>

El resultado del ejemplo sería:

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

Ver también

add a note

User Contributed Notes 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