Вопрос:
Как избежать, чтобы DOMDocument создавал начальный xml -tag?:
<?xml version="1.0"?>
Требуемый код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>My site</title> </head> <body> </body> </html>
Произведенный код с использованием DOMDocument:
<?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>My site</title> </head> <body></body> </html>
Мой сценарий:
<?php /** * Ref: * https://stackoverflow.com/questions/19482826/using-domdocument-to-create-elements-in-an-html-file * https://www.php.net/manual/en/domimplementation.createdocumenttype.php */ // Creates an instance of the DOMImplementation class $imp = new DOMImplementation; // Doctype $dtd = $imp->createDocumentType( 'html', '-//W3C//DTD XHTML 1.0 Transitional//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd' ); // Base document $doc = $imp->createDocument("", "", $dtd); $doc->formatOutput = true; /** * Construct tag skeleton. */ // [L-1] $html=$doc->appendChild( $doc->createElementNS("http://www.w3.org/1999/xhtml","html") ); $html->setAttribute("lang", "en"); $html->setAttribute("xml:lang", "en"); $doc->appendChild($html); // [L-2] $head=$html->appendChild( $doc->createElement('head') ); // [L-3] $title=$head->appendChild( $doc->createElement( 'title', "My site" ) ); // [L-2] $body=$html->appendChild( $doc->createElement('body') ); // Save echo $doc->saveHTML(); $doc->save("auto_produced_xhtml.xhtml");
Вы можете использовать saveHTMLFile(); вместо save(), чтобы ... сохранить как HTML файл. Заменить
saveHTMLFile();
save()
$doc->save("auto_produced_xhtml.xhtml");
на
$doc->saveHTMLFile("auto_produced_xhtml.xhtml");
https://www.php.net/manual/en/domdocument.savehtmlfile.php