theseer / fxsl
此包已被弃用且不再维护。未建议替代包。
PHP 5.x XSLTProcessor 的 XSL 包装/扩展,具有异常和扩展回调支持
1.1.1
2014-11-27 20:08 UTC
Requires
- php: >=5.3.3
- ext-dom: *
- ext-libxml: *
- ext-xsl: *
This package is auto-updated.
Last update: 2020-01-23 01:11:19 UTC
README
此存储库中包含的类扩展了标准 XSLTProcessor,在所有错误情况下使用异常而不是 PHP 警告、通知或半完成的转换。它们还添加了各种自定义方法和快捷方式,以便方便使用,并允许更友好的 API 将回调实现到 PHP 栈中。
要求
PHP: 5.3.3 (5.3.0-5.3.2 had serious issues with spl stacked autoloaders)
Extensions: dom, xsl, libxml
安装
可以使用 PEAR 安装程序安装 fXSL,它是 PHP 扩展和应用存储库的核心,为 PHP 包提供分发系统。
根据您的操作系统发行版和/或您的 PHP 环境,您可能需要安装 PEAR 或更新现有的 PEAR 安装,然后才能继续本章中的说明。通常使用 sudo pear upgrade PEAR
就足以升级现有的 PEAR 安装。PEAR 手册解释了如何执行 PEAR 的新安装。
以下两个命令就是使用 PEAR 安装程序安装 fDOMDocument 所需的全部
sudo pear channel-discover pear.netpirates.net
sudo pear install TheSeer/fXSL
安装后,您可以在本地 PEAR 目录中找到源文件;路径通常是 /usr/share/pear/TheSeer/fXSL
(Fedora/Redhat)或 /usr/lib/php/TheSeer/fXSL
(Debian/Ubuntu)。
用法
只需引入提供的 autoload.php 并可以开始使用 fXSL 作为标准 XSLTProcessor 的替代品。
用法示例
PHP 代码
<?php
use TheSeer\fXSL\fXSLCallback;
use TheSeer\fXSL\fXSLTProcessor;
require 'TheSeer/fXSL/autoload.php';
function demo() {
return 'Demo reply';
}
class foo {
public function bar($a, $b) {
$x = new \DOMDocument();
$x->loadXML('<?xml version="1.0" ?><root />');
$p = $x->createTextNode($a . ' -> ' . $b);
$x->documentElement->appendChild($p);
return $x->documentElement;
}
}
$tpl = new DOMDocument();
$tpl->load('test.xsl');
$dom = new DOMDocument();
$xsl = new fXSLTProcessor($tpl);
$xsl->registerPHPFunctions('demo');
$test = new fXSLCallback('test:only','test');
$test->setObject(new foo());
$xsl->registerCallback($test);
$result = $xsl->transformToXml($dom);
$tpl->formatOutput = true;
echo "Template:\n" . $tpl->saveXML();
echo "\n\nOutput:\n".$result;
?>
使用的 'test.xsl' XSL 样式表
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" exclude-result-prefixes="php foo"
xmlns:foo="test:uri"
extension-element-prefixes="php func" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="https://php.ac.cn/xsl">
<xsl:output method="xml" indent="yes" encoding="utf-8" />
<xsl:template match="/">
<root>
<!-- classic php function callback -->
<demo><xsl:value-of select="php:function('demo')" /></demo>
<!-- fXSL registered callback method -->
<test><xsl:copy-of select="test:bar('hello','world')" /></test>
</root>
</xsl:template>
</xsl:stylesheet>
变更日志
#####版本 1.1.0
- 添加了 loadStylesheetFromFile 和 loadStylesheetFromXML 方法
- 在构造时清除 xml 错误
- 将受保护的属性和方法更改为私有
#####版本 1.0.4
- PHP 5.4 兼容性:设置默认安全首选项以便允许写入文件
#####版本 1.0.3
- 更改了错误检测代码以捕获更多问题
#####版本 1.0.2
- 扩展异常代码以更好地显示实际错误
#####版本 1.0.1
- 添加了对方法黑白名单的支持
- 生成更友好的 xsl 代码
- 各种错误修复
#####版本 1.0.0
- 首次发布