Внимательно посмотрели на XML файл, видим что в конце добавляется символ конца строки 0A. Но ситуация в том, что именно так сохраняют файл нативные функции XMLWriter в PHP
$xml = new \XMLWriter();
$xml->openUri($sitemap_filepath);
$xml->startDocument('1.0', 'utf-8');
$xml->startElement('sitemapindex');
$xml->writeAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9');
foreach($chunk_filenames as $file_data) {
$xml->startElement('sitemap');
$xml->writeElement('loc', $file_data['url']);
$xml->writeElement('lastmod', date('c', filemtime($file_data['path'])));
$xml->endElement();
}
$xml->endDocument();
$xml->flush();
В интернете никто не жалуется на это, это тоже наталкивает на мысль о том, что проблемы то нет.
Я больше склоняюсь, что это баг на стороне валидации Яндекса. Было бы здорово, если бы вы смогли им написать об этом. Или Яндекс заставляет нас делать костыльный код формирования Sitemap вручную, в чем я очень сомневаюсь.
И ведь все online валидаторы - тоже говорят, что все ОК.