theseer/fxsl

此包已被弃用且不再维护。未建议替代包。

PHP 5.x XSLTProcessor 的 XSL 包装/扩展,具有异常和扩展回调支持

维护者

详细信息

github.com/theseer/fXSL

源代码

问题

安装: 2,269,121

依赖项: 1

建议者: 0

安全: 0

星星: 17

关注者: 1

分支: 6

开放问题: 1

1.1.1 2014-11-27 20:08 UTC

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

  • 首次发布