Я хотел бы передать текущий URL страницы в качестве атрибута для XSL-шаблона. Насколько я понял, он должен быть передан как параметр, а затем использован как атрибут.
Я использую PHP для загрузки файлов XML и XSL:
<?php $xml = new DOMDocument; $xml->load('main.xml'); $xsl = new DOMDocument; $xsl->load('blocks/common.xsl'); $proc = new XSLTProcessor; $proc->importStyleSheet($xsl); echo $proc->transformToXML($xml); ?>
Как этот код должен быть изменен для передачи URL-адреса в качестве параметра с именем «current-url», например?
Я видел много похожих вопросов здесь с различными решениями, но пока никто не работал. Заранее спасибо.
Возможно, вы уже пробовали этот подход, но если нет:
<?php $params = array('current-url' => $_SERVER['REQUEST_URI']); $xml = new DOMDocument; $xml->load('main.xml'); $xsl = new DOMDocument; $xsl->load('blocks/common.xsl'); $proc = new XSLTProcessor; $proc -> registerPHPFunctions(); $proc->importStyleSheet($xsl); foreach ($params as $key => $val) $proc->setParameter('', $key, $val); echo $proc->transformToXML($xml); ?>
В xsl добавьте выше шаблонов
<xsl:param name="current-url" />
В шаблонах вы можете получить значение, используя
<xsl:value-of select="$current-url" />
Если вы еще этого не сделали, вам нужно добавить xmlns:php="http://php.net/xsl"
в объявление xsl: stylesheet.
Для справки: registerPHPFunctions () и решение, которое вы, возможно, уже проверили на SO: Передача переменных в XSLT