Я пытаюсь создать действующий в iTunes фид подкастов, используя simplexml php5:
<?php
$xml_string = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<channel>
</channel>
XML;
$xml_generator = new SimpleXMLElement($xml_string);
$tnsoundfile = $xml_generator->addChild('title', 'Main Title');
$tnsoundfile->addChild('itunes:author', "Author", ' ');
$tnsoundfile->addChild('category', 'Audio Podcasts');
$tnsoundfile = $xml_generator->addChild('item');
$tnsoundfile->addChild('title', 'The track title');
$enclosure = $tnsoundfile->addChild('enclosure');
$enclosure->addAttribute('url', 'http://test.com');
$enclosure->addAttribute('length', 'filelength');
$enclosure->addAttribute('type', 'audio/mpeg');
$tnsoundfile->addChild('itunes:author', "Author", ' ');
header("Content-Type: text/xml");
echo $xml_generator->asXML();
?>
Это не проверяется, потому что я должен поставить строку:
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
согласно http://www.apple.com/itunes/podcasts/specs.html< /а>.
Таким образом, вывод ДОЛЖЕН быть:
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<channel>
и т. д. Я снова и снова просматривал руководство и форумы, но не могу понять правильно. Если я поставлю рядом с нижним колонтитулом:
header("Content-Type: text/xml");
echo '<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">';
echo $xml_generator->asXML();
?>
Тогда он выглядит правильно в firefox и больше не жалуется на неопределенные пространства имен, но feedvalidator жалуется, что
строка 1, столбец 77: ошибка синтаксического анализа XML: :1:77: объявление xml не в начале внешнего объекта [помощь]
потому что документ теперь начинается:
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><?xml version="1.0" encoding="UTF-8"?>
и не
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">