xslt 1 and sum function(xslt 1 和求和函数)
问题描述
我使用 xml 和 PHP 创建了一个发票管理系统,但最新的 PHP 版本不支持 XSLT 2.0 - 因此我必须寻找 sum() 替代方案.如何将有效的 xslt 2 函数 "sum(unitprice * quantity)" 转换为 xslt 1.0 ?
I create an invoice management system using xml and PHP but the latest PHP version does not support XSLT 2.0 - therefore I have to look for an sum() alternative. How can I transform the valid xslt 2 function "sum(unitprice * quantity)" to xslt 1.0 ?
XML 内容基于 John 的示例
我用节点集尝试过,但不支持xmlXPathCompOpEval: function node-set not found in"
I tried it with a node-set, but it is not supported "xmlXPathCompOpEval: function node-set not found in"
推荐答案
实际上,sum(price*quantity)
不是有效的 XSLT 2.0 语法.我猜你的意思是 `sum(for $x in * return $x/price*$x/quantity).
Actually, sum(price*quantity)
isn't valid XSLT 2.0 syntax. I guess you mean something like `sum(for $x in * return $x/price*$x/quantity).
对 XSLT 1.0 中的计算值求和可以通过以下方式完成:
Summing over a computed value in XSLT 1.0 can be done in the following ways:
两遍解决方案,创建一个节点集,其中节点保存计算值,然后对节点集求和
two pass solution, create a node-set in which the nodes hold the computed values, then sum over the node-set
递归解决方案:编写一个递归模板,将total作为参数传递,为当前节点添加sum*quantity,然后递归处理剩余节点
recursive solution: write a recursive template that passes the total so far as a parameter, adds sum*quantity for the current node, then recurses to process the remaining nodes
高阶解决方案:使用 Dimitre Novatchev 的 FXSL 库
higher-order solution: use Dimitre Novatchev's FXSL library
扩展解决方案:使用扩展函数,如 saxon:sum()
extension solution: use extension functions like saxon:sum()
这篇关于xslt 1 和求和函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:xslt 1 和求和函数
基础教程推荐
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01