Wednesday, April 13, 2011

How to use php sessions in xslt?

How do I use php sessions in XSLT for example for making a shopping cart for a webshop?

A user can browse the site and click "Add to cart" on several items. Each item should then be stored in a session variable. The user can at all time view the items selected by clicking "View cart".

From stackoverflow
  • If you're using XSLT from within PHP, you can pass parameters to it by XSLTProcessor::setParameter(). You'll have to declare that parameter in XSL with

    <xsl:param name="«param name»"/>
    

    For example...

    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>
    
    jorgen : I will try this! Thank you!
  • you're probably calling the xslt processor on some XML, why don't you just add the session data to that xml ?

0 comments:

Post a Comment