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
-
外部サブセットの公開 ID。
systemId
-
外部サブセットのシステム ID。
戻り値
ownerDocument
を null
に設定した
新しい DOMDocumentType ノードを返します。
エラーの場合は false
を返します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 |
この関数を static メソッドとしてコールすると、
Error がスローされるようになりました。
これより前のバージョンでは、
E_DEPRECATED が発生していました。
|
例
例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
User Contributed Notes 1 note
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.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google