PHP Conference Japan 2024

DOMImplementation::createDocument

(PHP 5, PHP 7, PHP 8)

DOMImplementation::createDocument 建立指定型別且含有文件元素之 DOMDocument 物件

描述

public DOMImplementation::createDocument(?string $namespace = null, string $qualifiedName = "", ?DOMDocumentType $doctype = null): DOMDocument

建立指定型別且含有文件元素之 DOMDocument 物件。

參數

namespace

要建立的文件元素的命名空間 URI。

qualifiedName

要建立的文件元素的限定名稱。

doctype

要建立的文件類型,或者 null

回傳值

新的 DOMDocument 物件。如果 namespacequalifiedNamedoctype 為 null,則回傳的 DOMDocument 是空的,且沒有文件元素。

錯誤/例外

DOM_WRONG_DOCUMENT_ERR

如果 doctype 已用於不同的文件,或從不同的實作建立,則會引發此錯誤。

DOM_NAMESPACE_ERR

如果命名空間發生錯誤,如 namespacequalifiedName 所決定,則會引發此錯誤。

變更日誌

版本 描述
8.4.0 此函式現在具有暫定回傳型別 DOMDocument
8.0.3 namespace 現在可為 null。
8.0.0 doctype 現在可為 null。
8.0.0 靜態呼叫此函式現在會拋出 Error。先前,會引發 E_DEPRECATED

參見

新增筆記

使用者貢獻筆記 3 則筆記

eboyjr
14 年前
為了補充其他範例,以下是如何建立具有 head、title 和 body 元素的 XHTML 1.0 transitional 文件。

<?php

$document
= DOMImplementation::createDocument(null, 'html',
DOMImplementation::createDocumentType("html",
"-//W3C//DTD XHTML 1.0 Transitional//EN",
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"));
$document->formatOutput = true;

$html = $document->documentElement;
$head = $document->createElement('head');
$title = $document->createElement('title');
$text = $document->createTextNode('Title of Page');
$body = $document->createElement('body');

$title->appendChild($text);
$head->appendChild($title);
$html->appendChild($head);
$html->appendChild($body);

echo
$document->saveXML();
?>

這會輸出: (由於垃圾訊息已移除 http 連結)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "doctype.dtd">
<html xmlns="w3org1999xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Title of Page</title>
</head>
<body></body>
</html>

請注意 saveXML 函式。如果改用 saveHTML,則會得到輸出

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "doctype.dtd">
<html>
<head><title>Title of Page</title></head>
<body></body>
</html>
arturm at union dot com dot pl
18 年前
建立含有 doctype 的 HTML 文件

<?php
$doctype
= DOMImplementation::createDocumentType("html",
"-//W3C//DTD HTML 4.01//EN",
"http://www.w3.org/TR/html4/strict.dtd");
$doc = DOMImplementation::createDocument(null, 'html', $doctype);
?>
sleistico at gmail dot com
6 年前
我最近在使用此處列出的其他範例中的呼叫類型時,遇到與棄用相關的錯誤。我必須改做的是這樣...

$htmldoc = (new DOMImplementation)->createDocument(null, 'html', (new DOMImplementation)->createDocumentType("html"));

這會在頂端建立一個含有 <!DOCTYPE html> 的文件。
To Top