DOMImplementation::createDocumentType

(PHP 5, PHP 7, PHP 8)

DOMImplementation::createDocumentType Crée un objet DOMDocumentType vide

Description

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

Crée un objet DOMDocumentType vide. Les déclarations et notations d'entités ne sont pas disponibles. Les expansions de références d'entités et les ajouts d'attributs par défaut ne sont pas non plus effectués.

Liste de paramètres

qualifiedName

Le nom qualifié du type de document à créer.

publicId

L'identifiant publique externe du sous-ensemble.

systemId

L'identifiant système externe du sous-ensemble.

Valeurs de retour

Un nouveau nœud DOMDocumentType avec son ownerDocument défini à null.

Erreurs / Exceptions

DOM_NAMESPACE_ERR

Levée si il y a une erreur avec l'espace de noms, déterminé par qualifiedName.

Cette méthode peut être appelée statiquement, mais enverra une erreur E_STRICT.

Exemples

Exemple #1 Création d'un document avec une DTD attachée

<?php

// Création d'une instance de la classe DOMImplementation
$imp = new DOMImplementation;

// Création d'une instance DOMDocumentType
$dtd $imp->createDocumentType('graph''''graph.dtd');

// Création d'une instance DOMDocument
$dom $imp->createDocument(""""$dtd);

// Définition des autres propriétés
$dom->encoding 'UTF-8';
$dom->standalone false;

// Création d'un élément vide
$element $dom->createElement('graph');

// Ajout de l'élément
$dom->appendChild($element);

// Récupère et affiche le document
echo $dom->saveXML();

?>

L'exemple ci-dessus va afficher :

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

Voir aussi

add a note 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