我使用xml和PHP创建发票管理系统,但最新的PHP版本不支持XSLT 2.0 – 因此我必须寻找sum()替代方案.如何将有效的xslt 2函数“sum(unitprice * quantity)”转换为xslt 1.0?
XML的东西基于John’s Examples
我尝试使用节点集,但不支持“xmlXPathCompOpEval:找不到函数节点集”
解决方法:
实际上,sum(price * quantity)是无效的XSLT 2.0语法.我想你的意思是“总和($x in * return $x / price * $x / quantity).
可以通过以下方式对XSLT 1.0中的计算值求和:
>两个通过解决方案,创建一个节点集,其中节点保存计算值,然后在节点集上求和
>递归解决方案:编写一个递归模板,传递总数到目前为止的参数,为当前节点添加sum *数量,然后递归以处理剩余的节点
>高阶解决方案:使用Dimitre Novatchev的FXSL库
>扩展解决方案:使用像saxon这样的扩展函数:sum()