将URL作为参数传递给XSL

时间:2014-09-13 18:17:08

标签: php xml url xslt parameters

我想将当前页面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”的参数传递,例如?

我在这里看到了很多类似的问题和不同的解决方案,但迄今为止没有一个对我有用。提前谢谢。

1 个答案:

答案 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