I'd like to pass current page URL as an attribute to XSL template. As far as I understood it should be passed as a parameter, and then used as an attribute.
I use PHP to load XML & XSL files:
<?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);
?>
How should this code be altered to pass URL as a parameter named "current-url", for example?
I've seen a lot of similar questions here with different solutions, but none has worked for me so far. Thank you in advance.
Maybe you already tried this approach, but in case if not:
<?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);
?>
In the xsl, add above the templates
<xsl:param name="current-url" />
In the templates, you can get the value using
<xsl:value-of select="$current-url" />
If not already there, you have to add xmlns:php="http://php.net/xsl"
into the xsl:stylesheet declaration.
For reference: registerPHPFunctions() and a solution you maybe already checked on SO: Passing variables to XSLT