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');
xslt_create
(PHP 4 >= 4.0.3)
xslt_create — Erzeugt einen neuen XSLT-Prozessor
Beschreibung
resource xslt_create
( void
)
Erzeugt eine neue XSLT-Prozessor-Ressource für die Verarbeitung durch andere XSLT-Funktionen und gibt sie zurück.
Rückgabewerte
Gibt bei Erfolg einen XSLT-Prozessor-Linkidentifier zurück,
im Fehlerfall wird FALSE zurückgegeben.
Beispiele
Beispiel #1 xslt_create()-Beispiel
<?php
function xml2html($xmldata, $xsl)
{
/* $xmldata -> Ihr XML */
/* $xsl -> XSLT-Datei */
$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;
}
?>
xslt_create
myadzel at gmail dot com
20-Mar-2007 05:26
20-Mar-2007 05:26
Kerry Kobashi
29-Mar-2005 05:29
29-Mar-2005 05:29
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
18-Sep-2003 02:23
18-Sep-2003 02:23
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.