Я пытаюсь использовать SimpleXML для вывода правильно сформированного документа XHTML. Я делаю это так:
$pbDoc = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>
<!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">
<head>
<title>'.$myTitle.'</title>
<!-- Other headers -->
</head>
</html>');
После того, как я создал документ, я хочу вывести довольно читаемый код, поэтому я использую модуль DOM следующим образом:
$dom = new DOMDocument();
$dom->loadXML($pbDoc->asXML());
$dom->formatOutput = true;
echo $dom->saveXML();
Теперь есть две странные вещи, которые меня беспокоят, и мне интересно, нормально ли это поведение и как его отключить, если это возможно.
наличие DOCTYPE приводит к тому, что
$pbDoc->asXML()
добавляет ненужный метатег сразу после открывающего тега<head>
:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Почему?
- по какой-то причине модуль DOM для меня вообще не делает отступ в коде (хотя он делает это очень хорошо с другим документом, который является XML, а не XHTML).
Может ли кто-нибудь просветить меня о том, где я могу ошибаться и как избавиться от этих неприятностей?