Хотите показать XML представление в html используя php - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть страница oai.php. Теперь, когда я набираю URL-адрес oai.php? Verb = identifier, то хочу показать содержимое в identif.xml. Но мне нужен тот же URL-адрес (oai.php? Verb = identifier), когда я просматриваю код identif.xml.Below, отображающий только данные XML.

 <?php

include "config.php";
$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")
{
    include "config.php";

    $date_mod = gmdate("Y-m-d\TH:i:s\Z");
    $viewss1=$con->query("SELECT COUNT(upload_paper_id) FROM upload_papers");
    $cview1=$viewss1->fetch_row();
    $countt1=$cview1[0];

    $rss_txt = '<?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="http://localhost/oai-file/data/oai2.xsl" ?>
    <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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="ListRecords" metadataPrefix="oai_dc">http:mywebsite.org</request>
    <ListRecords>';
        $query = "SELECT * FROM upload_papers";
        $result=$con->query($query);
        while($values_query = mysqli_fetch_assoc($result))
        {
            $year= $values_query['year'];
            $upload_paper_id= $values_query['upload_paper_id'];
    $rss_txt = '<record>
    <header>

    <identifier>' .$upload_paper_id. '</identifier>
    <datestamp>' .$date_mod. '</datestamp>
    <setSpec>mydoc8:BIH</setSpec>

    </header>
    <metadata>



    <oai_dc:dc
        xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
        http://www.openarchives.org/OAI/2.0/oai_dc.xsd">    
    <dc:title xml:lang="en-US">' .$values_query['paper_title']. '</dc:title>
    <dc:creator>' . $values_query['author_name']. '</dc:creator>    
    <dc:creator>' . $values_query['co_author_name']. '</dc:creator> 
    <dc:description xml:lang="en-US">' .$values_query['abstract']. '</dc:description>   
    <dc:publisher xml:lang="en-US">' .$values_query['journal_nam']. '</dc:publisher>    
    <dc:contributor xml:lang="en-US">' .$values_query['author_name']. '</dc:contributor>
    <dc:type xml:lang="en-US">Article</dc:type> 
    <dc:format>application/pdf</dc:format>  
    <dc:identifier>http://mywebsite'.$year.'/article.php?page='.$upload_paper_id.'</dc:identifier>
    <dc:language>en</dc:language>   
    </oai_dc:dc>
    </metadata>
            </record>';
     }  
               $rss_txt = '<resumptionToken
                completeListSize="'.$countt1.'"
                cursor="0">'.$date_mod.'</resumptionToken>


    </ListRecords>
    </OAI-PMH>';


}
else if($id=="ListSets")
{
    $rss_txt =file_get_contents("ListSets.xml");
}
header('Content-type: application/xml');
echo $rss_txt;

?>

Над кодом показаны только данные xml. Выходные данные прилагаются ниже Out put И я хочу вывод, как Wanted output . Если я набираю глагол = identifier в url, то он хочет показать файл identifier.xsd или xml любой. Затем я набираю Listsets Хотите показать содержимое в этой странице. Если глагол равен пустому, хотите показать страницу идентификации. меня. Это действительно раздражает меня. Спасибо

1 Ответ

0 голосов
/ 28 апреля 2018

Есть несколько проблем с кодом. Главное, чтобы ваш заголовок был типом контента 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 в конец, чтобы они все имели одинаковую логику.

...