Как преобразовать XML с помощью XSLT с помощью PHP в Wordpress - PullRequest
5 голосов
/ 24 января 2010

Прямо сейчас я преобразую документ 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);

?>

Ответы [ 4 ]

3 голосов
/ 24 января 2010

Вам просто нужно заменить этот бит 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);
2 голосов
/ 25 января 2010

Решил.

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

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

1 голос
/ 23 января 2012

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

0 голосов
/ 24 января 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...