Есть несколько проблем с кодом. Главное, чтобы ваш заголовок был типом контента XML. Это скажет браузеру, чего ожидать. Но есть несколько других вопросов.
$id= $_GET['verb'];
//echo $id;
if($id=="identify")
{
$date_mod = gmdate("Y-m-d\TH:i:s\Z");
$rss_txt ='<?xml version="1.0" encoding="utf-8"?>
<OAI-PMH xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>' .$date_mod. '</responseDate>
<request verb="Identify">http://mywebsite.org/oai</request>
<Identify>
<repositoryName>mydomain</repositoryName>
<baseURL>mywesite.com</baseURL>
<protocolVersion>2.0</protocolVersion>
<adminEmail>myemail</adminEmail>
<earliestDatestamp>'.$date_mod.'</earliestDatestamp>
<deletedRecord>transient</deletedRecord>
<granularity>YYYY-MM-DDThh:mm:ssZ</granularity>
</Identify>
</OAI-PMH>';
}
else if($id=="ListRecords")
{
$rss_txt =file_get_contents("compend1.xml");
}
else if($id=="ListSets")
{
$rss_txt =file_get_contents("ListSets.xml");
}
header('Content-type: application/xml');
echo $rss_txt;
У вас было $rss_txt .=
, что с. означает добавить строку, которая, как вы нигде не объявляли, выдает ошибку о неопределенной переменной. Также с контентом - XML должен начинаться прямо в начале строки, поэтому удалите пробелы.
Главный имеет ...
header('Content-type: application/xml');
Но для того, чтобы это работало правильно, вам необходимо убедиться, что вы закомментировали echo
, который, как я полагаю, был отладочным кодом.
При выполнении if
- для присвоения значения используется один =
, поэтому для сравнения значений вам нужно ==
.
Вы можете использовать $_GET[]
для доступа к параметрам, а не к тому, как вы использовали, намного проще.
Я использовал file_get_contents()
для извлечения данных из этих других файлов и переместил echo
в конец, чтобы они все имели одинаковую логику.