以下代码是支持调用一些旧的 xslt_* 函数的包装器:
<?
if (PHP_VERSION >= 5) {
// 模拟旧的 xslt 库函数
function xslt_create() {
return new XsltProcessor();
}
function xslt_process($xsltproc,
$xml_arg,
$xsl_arg,
$xslcontainer = null,
$args = null,
$params = null) {
// 首先准备参数
$xml_arg = str_replace('arg:', '', $xml_arg);
$xsl_arg = str_replace('arg:', '', $xsl_arg);
// 创建 DomDocument 类的实例
$xml = new DomDocument;
$xsl = new DomDocument;
// 加载 xml 文档和 xsl 模板
$xml->loadXML($args[$xml_arg]);
$xsl->loadXML($args[$xsl_arg]);
// 加载 xsl 模板
$xsltproc->importStyleSheet($xsl);
// 定义参数时设置参数
if ($params) {
foreach ($params as $param => $value) {
$xsltproc->setParameter("", $param, $value);
}
}
// 开始转换
$processed = $xsltproc->transformToXML($xml);
// 指定时将结果放入文件
if ($xslcontainer) {
return @file_put_contents($xslcontainer, $processed);
} else {
return $processed;
}
}
function xslt_free($xsltproc) {
unset($xsltproc);
}
}
$arguments = array(
'/_xml' => file_get_contents("newxslt.xml"),
'/_xsl' => file_get_contents("newxslt.xslt")
);
$xsltproc = xslt_create();
$html = xslt_process(
$xsltproc,
'arg:/_xml',
'arg:/_xsl',
null,
$arguments
);
xslt_free($xsltproc);
print $html;
?>