我想将当前页面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”的参数传递,例如?
我在这里看到了很多类似的问题和不同的解决方案,但迄今为止没有一个对我有用。提前谢谢。
答案 0 :(得分:1)
也许你已经尝试过这种方法,但如果没有:
<?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上检查的解决方案:Passing variables to XSLT