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
    primarykey
    data
    text
    <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>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

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