如何在xslt中使用php会话?

时间:2009-03-13 11:41:02

标签: php xslt session

如何在XSLT中使用php会话,例如为网店制作购物车?

用户可以浏览该网站,然后点击几个项目上的“添加到购物车”。然后应将每个项目存储在会话变量中。用户可以通过单击“查看购物车”随时查看所选项目。

3 个答案:

答案 0 :(得分:3)

如果您在PHP中使用XSLT,则可以通过XSLTProcessor::setParameter()将参数传递给它。您必须使用

在XSL中声明该参数
<xsl:param name="«param name»"/>

例如......

PHP:

// $xsl, $xml -- DOMDocument objects
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
$proc->setParameter(''/*default namespace*/, 'test_param', $aValue);
$proc->setParameter('', 'session_name', session_name());
$proc->setParameter('', 'session_id', session_id());
echo $proc->transformToXML($xml);

XSL:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:param name="test_param"/>
    <xsl:param name="session_name"/>
    <xsl:param name="session_id"/>
    <xsl:template match="/">
        <p>Your test parameter is: <xsl:value-of select="$test_param"/></p>
        <p>Your session name is: <xsl:value-of select="$session_name"/></p>
        <p>Your session ID is: <xsl:value-of select="$session_id"/></p>
        <p>
         <a>
          <xsl:attribute name="href">
            <xsl:value-of select="concat('http://example.com/index.php?',$session_name,'=',$session_id)"/>
          </xsl:attribute>
          Link with session
        </a>
       </p> 
    </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:0)

你可能在某些XML上调用了xslt处理器,为什么不把会话数据添加到那个xml?

答案 2 :(得分:0)

很久以来一直回答,但记录......

直接从xsl:

中获取会话变量
<xsl:text disable-output-escaping="yes">&lt;?php echo 'SESSION Name: ' . $_SESSION['session_name']; ?&gt;</xsl:text>

进行转换时,不要回显转换,而是包含它:

$output_file = 'new_file.php';
$xslt->transformToUri( $xml_dom,  $output_file);
include ('new_file.php');