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 ?
The XML stuff is based on John’s Examples
I tried it with a node-set, but it is not supported “xmlXPathCompOpEval: function node-set not found in”
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).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
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
higher-order solution: use Dimitre Novatchev’s FXSL library
extension solution: use extension functions like saxon:sum()