PHP 8.2.4 Released!

DOMImplementation::createDocumentType

(PHP 5, PHP 7, PHP 8)

DOMImplementation::createDocumentType Crear un objeto DOMDocumentType vacío

Descripción

public DOMImplementation::createDocumentType(string $qualifiedName = null, string $publicId = null, string $systemId = null): DOMDocumentType

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

Un nuevo nodo DOMDocumentType con su ownerDocument establecido a null.

Errores/Excepciones

DOM_NAMESPACE_ERR

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

Este método puede ser llamado de forma estática, pero lanzará un error E_STRICT.

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
-1
until-all-bytes-are-free at example dot org
11 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