(PHP 4 >= 4.0.3)
xslt_create — Create a new XSLT processor
Create and return a new XSLT processor resource for manipulation by the other XSLT functions.
Returns an XSLT processor link identifier on success, or FALSE
on error.
Example #1 xslt_create() example
<?php
function xml2html($xmldata, $xsl)
{
/* $xmldata -> your XML */
/* $xsl -> XSLT file */
$path = 'include';
$arguments = array('/_xml' => $xmldata);
$xsltproc = xslt_create();
xslt_set_encoding($xsltproc, 'ISO-8859-1');
$html =
xslt_process($xsltproc, 'arg:/_xml', "$path/$xsl", NULL, $arguments);
if (empty($html)) {
die('XSLT processing error: '. xslt_error($xsltproc));
}
xslt_free($xsltproc);
return $html;
}
?>
LW (2008-08-28 01:41:30)
Hello,
I changed the function from myadzel (?) a little bit, so that it now correctly uses either a file OR a string as parameter - WITHOUT producing PHP warnings. See here:
<?php
function xslt ($xml, $xsl) {
$xh = @xslt_create();
$args['xml'] = ( file_exists( $xml ) )?join ('', file ($xml)):$xml;
$args['xsl'] = ( file_exists( $xsl ) )?join ('', file ($xsl)):$xsl;
// try with a string
$result = @xslt_process ($xh, 'arg:/xml', 'arg:/xsl', NULL, $args);
// try with resource
if (!$result) { $result = @xslt_process ($xh, $xml, $xsl); }
@xslt_free ($xh);
return $result;
}
?>
Examples:
echo xslt ('./index.xml', './index.xsl');
echo xslt ('<test><example>An example!</example></test>', './index.xsl');
sxguard-1trail(At)yahoo dot com (2008-06-05 20:12:47)
Hardly can I find this. But, those required dll is not included in the package and no link for download.
It's a pitty that no discussion about this within php.net
Note to Win32 Users: In order to enable this module on a Windows environment, you must copy several files from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your windows machine. (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32). For PHP <= 4.2.0 copy sablot.dll and expat.dll to your SYSTEM32 folder. For PHP >= 4.2.1 copy sablot.dll, expat.dll and iconv.dll to your SYSTEM32 folder.
myadzel at gmail dot com (2007-03-20 08:26:59)
All for a long time know about a problem xslt-transformation in php.
We shall try a trivial way, knowing, that xslt_process () accepts string or resources in it's parameters.
function xslt ($xml, $xsl) {
$xh = @xslt_create();
$args['xml'] = join ('', file ($xml));
$args['xsl'] = join ('', file ($xsl));
// try with a string
$result = @xslt_process ($xh, 'arg:/xml', 'arg:/xsl', NULL, $args);
// try with resource
if (!$result) { $result = @xslt_process ($xh, $xml, $xsl); }
@xslt_free ($xh);
return $result;
}
For example: echo xslt ('./index.xml', './index.xsl');
Kerry Kobashi (2005-03-28 19:29:38)
It should be noted that xslt_create() will return FALSE in the case of failure (Sablotron processor could not be created).
This, obtained from looking at the source code extension.
garth at webconexion dot net (2003-09-18 05:23:46)
In order to pass PHP variables into an XSL document you need to do the following:
Firstly I created the following function to use:
function GetXHTML($sXML, $sXSL, $aParameters)
{
$hXML = xslt_create();
$aArguments = array('/_xml' => $sXML, '/_xsl' => $sXSL);
$sXHTML = xslt_process($hXML, 'arg:/_xml', 'arg:/_xsl', NULL, $aArguments, $aParameters);
xslt_free($hXML);
return $sXHTML;
}
Then call it like thus, passing the XML and XSL as a string with the final parameter being an array which can contain as many values as you wish to pass in:
$sXHTML = GetXHTML($sXML, $sXSL, array("age"=>"26"));
Then in the XSL document you need the following:
<xsl:param name="age" />
Then where you want to display the value of age you do this:
<xsl:value-of select="$age" />
Thanks now.