Как преобразовать XML с помощью XSLT с помощью PHP в WordPress

Прямо сейчас я преобразую XML-документ с таблицей стилей XSLT, используя Javascript (на веб-сайте WordPress). Это отлично работает в Firefox и Chrome, но не в IE. Кроме того, если Javascript не включен, ничего не появится.

Итак, моя цель – преобразование XML / XSLT в XHTML на сервере, а не на клиента, предпочтительно с использованием PHP.

Я пробовал много разных PHP-скриптов, написанных другими людьми (я новичок), но я не могу заставить их работать. Я включил простейший PHP-скрипт, который я нашел ниже. Я знаю, что динамический путь к файлу может быть проблемой, но я не знаю, как лучше найти файлы XML и XSLT.

Когда я использую приведенный ниже сценарий, я получаю сообщение об ошибке: Ошибка синтаксиса: ошибка синтаксиса, неожиданный T_STRING в /home/alan/public_html/wp-content/themes/Stacked/page-renting.php в строке 42

Альтернативные решения также приветствуются.

<?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); 

Решил.

Я пробовал вышеупомянутые предложения Джоша и Рубенса, но документы xml и xsl все еще не найдены. Но из идеи Джоша о другом способе доступа к каталогу шаблонов я немного искал Google и нашел это решение:

Вот окончательный PHP-скрипт, который я использовал для преобразования XML с XSLT на сервере с помощью 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?), Используя правильный случай для BOTH, имя темы (Stacked) и имя файла ( WORKS.xml, WORKS.xsl) необходимо, чтобы найти файл правильно.

Другим способом было бы не использовать XSLT вообще, а вместо этого плагин, который преобразует XML, используя простую надбавку. См. Этот плагин .

Вы должны удалить эту информацию в блоге; этот метод загрузки получает ваши имена файлов XML / XSLT.

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

Конечно, они должны указать правильный путь к вашим файлам XML / XSLT