Например такой код
<?php
function generate_xml() {
$data = '<?xml version="1.0" encoding="utf-8"?>' . PHP_EOL;
$data .= '<categories>' . PHP_EOL;
$data .= '<category>'. PHP_EOL;
$data .= '<item1>' . $name1 . '</item1>' . PHP_EOL;
$data .= '<item2>' . $name1 . '</item2>' . PHP_EOL;
$data .= '<item3>' . $name1 . '</item3>' . PHP_EOL;
$data .= '</category>' . PHP_EOL;
$data .= '</categories>' . PHP_EOL;
drupal_set_header("Content-type: application/xhtml+xml; charset=utf-8");
// пробовал также header();
$save = file_save_data($data, $dest, FILE_EXISTS_REPLACE);
if ($save) drupal_set_message('Saved!', 'status');
[user=chmod]chmod[/user]($dest, 0664);
}
?>
Вообщем смысл сгенерировать статический XML файл. Всё создаётся, но файл получается невалидный. Вот что говорит валидатор:
«Missing "charset" attribute for "text/xml" document.
The HTTP Content-Type header (text/xml) sent by your web server (nginx) did not contain a "charset" parameter, but the Content-Type was one of the XML text/* sub-types. »
Смотрел заголовок в файрбаге, действительно, не задекларирована кодировка. Грешил на хост, но карта сайта, которая создаётся xmlsitemap проходит валидацию. Также игрался в notepad++ с кодировками файла, в котором генерируется XML
Где делаю неправильно?
Комментарии
Ага.
Заголовок я вообще не туда тулю, есть в апи спецфункции для этого
file_download() и file_transfer()
Так то