コメントから、CMS フレームワーク内で作業していて、コードが配置される前にコンテンツの出力を停止できないことがわかります。
作業しているスクリプトが (制御できない範囲で) 既にコンテンツを出力している場合、1 つのスクリプトだけで達成しようとしていることを行うことはできません。
スクリプトは、「次のコンテンツは HTML です」というヘッダーを送信してから HTML を出力するか、「次のコンテンツは XML であり、添付ファイルであり、特定のファイル名があります」というヘッダーを送信できます。両方を行うことはできません。
XML ファイルをダウンロードするための別のスクリプトへのリンクを含む HTML を出力するか、ファイル ダウンロードを発行して HTML を出力しないようにすることができます。
したがって、変更する CMS スクリプトの出力にダウンロード リンクを追加し、別のスクリプトでダウンロードを処理する必要があります。
役立つ実例を作成しました。この例には、ダウンロード リンクを含む単純な HTML ドキュメントと、ダウンロードを処理する PHP スクリプトが含まれています。
以下のコードを表示するか、実際の例を見てください。
HTML (不要な毛羽立ちを削除、必ずしも有効であるとは限りません)
<html>
<head>
<title>XML Download Example</title>
</head>
<body>
<a href="download.php">Download XML example</a>
</body>
</html>
PHP
<?php
// Populate XML document
$doc = new DomDocument();
// ... various modifications to the document are made
// Output headers
header('Content-type: "text/xml"; charset="utf8"');
header('Content-disposition: attachment; filename="example.xml"');
// Output content
echo $doc->saveXML();
?>
2 番目のスクリプトを使用してダウンロードを完全に処理できない場合 (関連データにアクセスできない可能性があります)、問題を再考する必要があります。