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();
さて、私を悩ませている奇妙なことが 2 つあります。この動作が正常なのか、可能であれば無効にする方法を考えています。
DOCTYPE が存在すると、開始タグ
$pbDoc->asXML()
の直後に不要なメタ タグが追加されます。<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
なんで?
- 何らかの理由で、DOM モジュールはコードをまったくインデントしません (ただし、XHTML ではなく XML である別のドキュメントでは非常にうまく機能します)。
私が間違っている可能性がある場所と、これらの煩わしさを取り除く方法について誰か教えてもらえますか?