Note that there are some explanatory texts on larger screens.

plurals
  1. POHow can I put result of a calculation with xsl in a new element
    text
    copied!<p>I use a xsl to calculate the cumulative total per element "Basisproduct". The output has finally to be put in the same xml, after "Totals" in some new elements, like this:</p> <pre><code>&lt;Totals&gt; &lt;Totalproduct&gt; &lt;Basisproduct&gt;110&lt;/Basisproduct&gt; &lt;Cumul_Amount&gt;1,52&lt;/CustInvoice_LineAmount&gt; &lt;/Totalproduct&gt; &lt;Totalproduct&gt; &lt;Basisproduct&gt;198&lt;/Basisproduct&gt; &lt;Cumul_Amount&gt;294,77&lt;/CustInvoice_LineAmount&gt; &lt;/Totalproduct&gt; &lt;Totalproduct&gt; &lt;Basisproduct&gt;992&lt;/Basisproduct&gt; &lt;Cumul_Amount&gt;163,32&lt;/CustInvoice_LineAmount&gt; &lt;/Totalproduct&gt; &lt;Totalproduct&gt; &lt;Basisproduct&gt;993&lt;/Basisproduct&gt; &lt;Cumul_Amount&gt;193,78&lt;/CustInvoice_LineAmount&gt; &lt;/Totalproduct&gt; &lt;Totals&gt; &lt;-----I have this xml as an input.------&gt; &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;Report Name="SalesInvoice"&gt; &lt;ReportName&gt;SalesInvoice&lt;/ReportName&gt; &lt;Invoice&gt; &lt;InvoicingName&gt;Test Company&lt;/InvoicingName&gt; &lt;/Invoice&gt; &lt;ConditionalArea&gt; &lt;BodyCustInvoice&gt; &lt;Basisproduct&gt;110&lt;/Basisproduct&gt; &lt;CustInvoice_LineAmount&gt;1,52&lt;/CustInvoice_LineAmount&gt; &lt;/BodyCustInvoice&gt; &lt;BodyCustInvoice&gt; &lt;Basisproduct&gt;198&lt;/Basisproduct&gt; &lt;CustInvoice_LineAmount&gt;20,11&lt;/CustInvoice_LineAmount&gt; &lt;/BodyCustInvoice&gt; &lt;BodyCustInvoice&gt; &lt;Basisproduct&gt;198&lt;/Basisproduct&gt; &lt;CustInvoice_LineAmount&gt;20,22&lt;/CustInvoice_LineAmount&gt; &lt;/BodyCustInvoice&gt; &lt;BodyCustInvoice&gt; &lt;Basisproduct&gt;992&lt;/Basisproduct&gt; &lt;CustInvoice_LineAmount&gt;3033&lt;/CustInvoice_LineAmount&gt; &lt;/BodyCustInvoice&gt; &lt;BodyCustInvoice&gt; &lt;Basisproduct&gt;993&lt;/Basisproduct&gt; &lt;CustInvoice_LineAmount&gt;30,34&lt;/CustInvoice_LineAmount&gt; &lt;/BodyCustInvoice&gt; &lt;BodyCustInvoice&gt; &lt;Basisproduct&gt;992&lt;/Basisproduct&gt; &lt;CustInvoice_LineAmount&gt;30,35&lt;/CustInvoice_LineAmount&gt; &lt;/BodyCustInvoice&gt; &lt;BodyCustInvoice&gt; &lt;Basisproduct&gt;992&lt;/Basisproduct&gt; &lt;CustInvoice_LineAmount&gt;30.45&lt;/CustInvoice_LineAmount&gt; &lt;/BodyCustInvoice&gt; &lt;BodyCustInvoice&gt; &lt;Basisproduct&gt;993&lt;/Basisproduct&gt; &lt;CustInvoice_LineAmount&gt;30,46&lt;/CustInvoice_LineAmount&gt; &lt;/BodyCustInvoice&gt; &lt;BodyCustInvoice&gt; &lt;Basisproduct&gt;198&lt;/Basisproduct&gt; &lt;CustInvoice_LineAmount&gt;100.99&lt;/CustInvoice_LineAmount&gt; &lt;/BodyCustInvoice&gt;, &lt;/ConditionalArea&gt; &lt;Totals&gt; &lt;/Totals&gt; &lt;/Report&gt; </code></pre> <p>The xsl I use to calculate the cumlative sum of "Basisproduct" is:</p> <pre><code>&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt; &lt;xsl:output indent="yes"/&gt; &lt;xsl:strip-space elements="*"/&gt; &lt;xsl:decimal-format name="EU" decimal-separator="," grouping-separator="."/&gt; &lt;xsl:key name="KType" match="Basisproduct" use="."/&gt; &lt;xsl:template match="node()|@*"&gt; &lt;xsl:copy&gt; &lt;xsl:apply-templates select="node()|@*"/&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;xsl:template match="TotalSBasis"&gt; &lt;TotalSBasis&gt; &lt;xsl:for-each select="/*/*/*/Basisproduct [generate-id() = generate-id(key ('KType', .)[1])]"&gt; &lt;xsl:variable name="currProd" select="."/&gt; &lt;Totalproduct&gt; &lt;xsl:copy-of select="."/&gt; &lt;Cumul_Amount&gt; &lt;xsl:value-of select="sum(/*/*/BodyCustInvoiceTrans [Basisproduct=$currProd]/CustInvoiceTrans_LineAmount)"/&gt; &lt;/Cumul_Amount&gt; &lt;/Totalproduct&gt; &lt;/xsl:for-each&gt; &lt;/TotalSBasis&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload