Прямо сейчас я преобразую 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); ?>
Две ключевые вещи, которые заставляют его работать:
Использование периода и пути к файлам в качестве альтернативы обычному методу WordPress, который я использовал ранее.
Чувствительность к регистру. Мои имена файлов были заглавными (не разумными, я знаю). Поскольку пути к файлу обычно не чувствительны к регистру, я не думал об этом, но получается, что в этом случае (когда внутри скрипта PHP?), Используя правильный случай для BOTH, имя темы (Stacked) и имя файла ( WORKS.xml, WORKS.xsl) необходимо, чтобы найти файл правильно.
Другим способом было бы не использовать XSLT вообще, а вместо этого плагин, который преобразует XML, используя простую надбавку. См. Этот плагин .
Вы должны удалить эту информацию в блоге; этот метод загрузки получает ваши имена файлов XML / XSLT.
$xml->load('/rentals/works.xml'); $xsl->load('/rentals/works.xsl');
Конечно, они должны указать правильный путь к вашим файлам XML / XSLT