Вообще, мне показалось, что все в корне неверно поняли мой вопрос, хотя ответ Дастана теплее.
Ответ будет таков:
Т.к. строка с XML у нас уже есть, осталось ее только присобачить к письму как к вложение, о чем и был вопрос. Сделать это можно например так:
$HTML = '<b>Текст<b>';
//$Наш кусок кода из вопроса
$xml ='<?xml version="1.0" encoding="WINDOWS-1251" ?>';
$xml .='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">';
$xml .='<xsl:template match="/">';
#$xml .= и так далее.... Или же иной XML формирующий процесс.
$filename = 'file.xml'; //Такое имя файла увидит пользователь при получении.
$subject = 'Ваш отчет, cударъ!';
$boundary = "--".md5(uniqid(time())); //Разделитель, который нужно будет использовать чтобы разделять разные типы контента в сообщении
//Напишем в хидере, что наше сообщение multipart (мол разный контент там будет)
$headers = "MIME-Version: 1.0;\r\n";
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
//Наш текст сообщения будет в перовой части сообщения в формате Html (не забываем про разделитель)
$part1 = "--$boundary\r\n";
$part1 .= "Content-Type: text/html; charset=windows-1251\r\n";
$part1 .= "Content-Transfer-Encoding: base64\r\n";
$part1 .= "\r\n";
$part1 .= chunk_split(base64_encode(iconv("utf8", "windows-1251", $HTML))); //контент кодируется в base64, о чем мы писали в Content-Transfer-Encoding, а также мы еще перед этим нашему сообщению сменили кодировку на windows-1251
//И самое интересное, мы ставим разделитель и помещаем контент, содержащий вложение, а также указываем имя вложения. А дальше всё как с обычным текстом, разница тут только в том, что такой контент не будет так просто отображен в почтовой программе, а отобразится как вложение, и чтобы его просмотреть, придется отдельно загрузить файл.
$part2 = "\r\n--$boundary\r\n";
$part2 .= "Content-Type: application/octet-stream; name=\"$filename\"\r\n";
$part2 .= "Content-Transfer-Encoding: base64\r\n";
$part2 .= "Content-Disposition: attachment; filename=\"$filename\"\r\n";
$part2 .= "\r\n";
$part2 .= chunk_split(base64_encode(iconv("utf8", "windows-1251", $xml)));
$part2 .= "\r\n--$boundary--\r\n";
//После всего этого мы можем отправить всё это на почту обычной функцией mail (php)
$message = $part1.$part2
mail(''example@site.com",$subject, $message ,$headers);
Всё должно получиться. Если у кого-то будут замечания по собственному решению, то прошу. Всегда радуюсь, когда указывают на ошибки, особенно если аргументируют.