簡體   English   中英

如何在Wordpress中使用PHP使用XSLT轉換XML

[英]How to Transform XML with XSLT using PHP in Wordpress

現在,我使用Javascript(在基於Wordpress的網站中)使用XSLT樣式表轉換XML文檔。 這在Firefox和Chrome中工作正常,但在IE中則不能。 另外,如果未啟用Javascript,則不會顯示任何內容。

因此,我的目標是在服務器(而不是客戶端)上進行XML / XSLT到XHTML的轉換,最好使用PHP。

我嘗試了其他人編寫的許多不同的PHP腳本(我是新手),但我無法使它們正常工作。 我已經包含了我在下面找到的最簡單的PHP腳本。 我知道動態文件路徑可能是個問題,但是我不知道找到XML和XSLT文件的更好方法。

當我使用以下腳本時,出現錯誤:解析錯誤:語法錯誤,/home/alan/public_html/wp-content/themes/Stacked/page-renting.php在第42行出現意外T_STRING

替代解決方案也將受到歡迎。

<?php

$xml = new DOMDocument();
$xml->load('<?php bloginfo('template_directory'); ?>/rentals/works.xml');

$xsl = new DOMDocument;
$xsl->load('<?php bloginfo('template_directory'); ?>/rentals/works.xsl');

$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);

echo $proc->transformToXML($xml);

?>

您只需要在適當的上下文中用以下方式替換那部分PHP:

$xml = new DOMDocument;
$xml->load(get_bloginfo('template_directory') . '/rentals/works.xml');

$xsl = new DOMDocument;
$xsl->load(get_bloginfo('template_directory') . '/rentals/works.xsl');

$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);

echo $proc->transformToXML($xml);

解決了。

我嘗試了Josh和Rubens的上述建議,但是仍然找不到xml和xsl文檔。 但是從喬什(Josh)提出的一種不同的方式訪問模板目錄的想法出發,我用Google搜索了一下,發現了以下解決方案:

這是我使用PHP在服務器上使用XSLT轉換XML的最終PHP腳本。 感謝所有的幫助。

<?php

$xml = new DOMDocument;
$xml->load('./wp-content/themes/Stacked/rentals/WORKS.xml');

$xsl = new DOMDocument;
$xsl->load('./wp-content/themes/Stacked/rentals/WORKS.xsl');

$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);

echo $proc->transformToXML($xml);

?>

使之起作用的兩個關鍵因素:

  1. 使用句點和文件路徑替代我以前使用的常用wordpress方法。

  2. 區分大小寫。 我的文件名大寫(我知道這是不明智的)。 由於文件路徑通常不區分大小寫,因此我沒有想到,但是在這種情況下(當在PHP腳本中嗎?),使用主題名稱(堆疊)和文件名( WORKS.xml,WORKS.xsl)是使其正確找到文件所必需的。

另一種方法是根本不使用XSLT,而是使用簡單的標記轉換XML的插件。 看到這個插件

您必須刪除該bloginfo信息; 該加載方法獲取您的XML / XSLT文件名。

$xml->load('/rentals/works.xml');
$xsl->load('/rentals/works.xsl');

當然,它們必須指出您的XML / XSLT文件的正確路徑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM