Is there any way to print a php array in xslt? I'm working with php sessions and trying to print the hole array in the xslt stylesheet.
+3
A:
To use your array in a XSLT stylesheet you first have to convert your array into a XML representation. This representation strongly depends on your array-structure. A simple way would be:
$array = (
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
// ext/DOM can also be used to create XML representation
$xml = new XMLWriter();
$xml->openMemory();
$xml->startDocument('1.0', 'UTF-8');
$xml->startElement('array');
// simple one-dimensional array-traversal - depending on your array structure this can be much more complicated (e.g. recursion)
foreach ($array as $key => $value) {
$xml->writeElement($key, $value);
}
$xml->endElement();
/*
* $xml will look like
* <array>
* <key1>value1</key1>
* <key2>value2</key2>
* <key3>value3</key3>
* </array>
*/
// convert XMLWriter document into a DOM representation (can be skipped if XML is created with ext/DOM)
$doc = DOMDocument::loadXML($xml->outputMemory());
// Load XSL stylesheet
$xsl = DOMDocument::load('stylesheet.xsl');
// Fire-up XSLT processor
$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);
// Output transformation
echo $proc->transformToXML($xml);
Stefan Gehrig
2009-03-16 10:23:40