XSLT (PHP 4) 函数
在线手册:中文  英文

xslt_create

(PHP 4 >= 4.0.3)

xslt_createCreate a new XSLT processor

说明

resource xslt_create ( void )

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;
}
?>

参见


XSLT (PHP 4) 函数
在线手册:中文  英文

用户评论:

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.

易百教程