XSLT 1.0 Sum – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self XSLT 1.0 Sum Mon, 31 Aug 20 07:00:33 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775093#m1775093 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775093#m1775093 <p>Hi,</p> <p>bräuchte für den Knoten "Total/AllowanceOrCharge_DEEE" ein neues Segment "Amount" mit der Summe von "Item/TotalQuantity" * "AllowanceOrCharge_Line/Amount" wenn unter "Item/AllowanceOrCharge_Line" der "Code" = "TX".</p> <p>Sprich (75 * 2,08) + (5*2,08) = 166,40</p> <p>XML:</p> <pre><code class="block"><?xml version="1.0" encoding="utf-8" standalone="yes"?> <SALESINVOICE> <HeaderInformation> <InvoiceNumber>Test</InvoiceNumber> </HeaderInformation> <LineInformation> <Item> <LineNum>1</LineNum> <TotalQuantity>75.00</TotalQuantity> <AllowanceOrCharge_Line> <Code>TX</Code> <Amount>2.08</Amount> </AllowanceOrCharge_Line> </Item> <Item> <LineNum>2</LineNum> <TotalQuantity>5.00</TotalQuantity> <AllowanceOrCharge_Line> <Code>TX</Code> <Amount>2.08</Amount> </AllowanceOrCharge_Line> </Item> </LineInformation> <Totals> <AllowanceOrCharge_DEEE> <Code>TX</Code> </AllowanceOrCharge_DEEE> </Totals> </SALESINVOICE> </code></pre> <p>XSLT:</p> <pre><code class="block"><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" standalone="yes" indent="yes"/> <xsl:strip-space elements="*" /> <xsl:template match="AllowanceOrCharge_DEEE"> <xsl:copy> <!--copy all other nodes--> <xsl:apply-templates select="@* | node()"/> <xsl:for-each select="//Item/AllowanceOrCharge_Line"> <xsl:if test="./Code = 'TX'"> <Amount> <xsl:value-of select="sum((./TotalQuantity * ./AllowanceOrCharge_Line/Amount))"/> </Amount> </xsl:if> </xsl:for-each> </xsl:copy> </xsl:template> <!-- Identity-Template für die nicht explizit benannten Elemente --> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> </code></pre> <p>Korrekt:</p> <pre><code class="block"><?xml version="1.0" encoding="utf-8" standalone="yes"?> <SALESINVOICE> <HeaderInformation> <InvoiceNumber>Test</InvoiceNumber> </HeaderInformation> <LineInformation> <Item> <LineNum>1</LineNum> <TotalQuantity>75.00</TotalQuantity> <AllowanceOrCharge_Line> <Code>TX</Code> <Amount>2.08</Amount> </AllowanceOrCharge_Line> </Item> <Item> <LineNum>2</LineNum> <TotalQuantity>5.00</TotalQuantity> <AllowanceOrCharge_Line> <Code>TX</Code> <Amount>2.08</Amount> </AllowanceOrCharge_Line> </Item> </LineInformation> <Totals> <AllowanceOrCharge_DEEE> <Code>TX</Code> <Amount>166.40</Amount> </AllowanceOrCharge_DEEE> </Totals> </SALESINVOICE> </code></pre> <p>danke & lg Julian</p> XSLT 1.0 Sum Mon, 31 Aug 20 07:39:34 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775094#m1775094 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775094#m1775094 <p>Hallo Julian,</p> <blockquote> <p>bräuchte für den Knoten "Total/AllowanceOrCharge_DEEE" ein neues Segment "Amount" mit der Summe von "Item/TotalQuantity" * "AllowanceOrCharge_Line/Amount" wenn unter "Item/AllowanceOrCharge_Line" der "Code" = "TX".</p> <p>Sprich (75 * 2,08) + (5*2,08) = 166,40</p> </blockquote> <p>Soll es mehrere amount-Elemente unterhalb von AllowanceOrCharge_DEEE geben oder genau eins?</p> <p>Die sum()-Funktion greift nur über Knotenmengen, also Element- oder Attributinhalte eines Namens. Berechnungen kann man innerhalb der Klammern nicht durchführen.</p> <p>Insofern braucht man hier ein rekursives Template, welches die einzelnen Teilergebnisse zusammenführt. Falls es mehrere amount-Elemente geben soll, dann würden die jeweiligen Einzelberechnungen ohne sum() reichen.</p> <p>Grüße,<br> Thomas</p> XSLT 1.0 Sum Mon, 31 Aug 20 07:47:24 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775095#m1775095 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775095#m1775095 <p>Danke Thomas, dass du dir auch dieses Thema anhängst. :)</p> <p>Danke auch für die Erklärung.</p> <p>Es soll genau ein einziges "Amount" unter "AllowanceOrCharge_DEEE" mit dem Gesamtwert geben.</p> <p>LG Julian</p> XSLT 1.0 Sum Mon, 31 Aug 20 10:19:08 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775100#m1775100 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775100#m1775100 <p>Hallo Julian,</p> <blockquote> <p>Es soll genau ein einziges "Amount" unter "AllowanceOrCharge_DEEE" mit dem Gesamtwert geben.</p> </blockquote> <p>XSLT-1.0-Variante mit xsl:call-template:</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>stylesheet</span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.0<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>output</span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xml<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.0<span class="token punctuation">"</span></span> <span class="token attr-name">encoding</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token attr-name">standalone</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span> <span class="token attr-name">indent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>strip-space</span> <span class="token attr-name">elements</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>*<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>AllowanceOrCharge_DEEE<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>copy</span><span class="token punctuation">></span></span> <span class="token comment"><!--copy all other nodes--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>apply-templates</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>@* | node()<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>tx_anz<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>count(//Item[AllowanceOrCharge_Line[Code = 'TX']])<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>if</span> <span class="token attr-name">test</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$tx_anz >= 1<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Amount</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>call-template</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>calc_amount<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>with-param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>summe<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>0<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>with-param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>i<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>with-param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>max<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$tx_anz<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>call-template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Amount</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>if</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>copy</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token comment"><!-- Identity-Template für die nicht explizit benannten Elemente --></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>@* | node()<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>copy</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>apply-templates</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>@* | node()<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>copy</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>calc_amount<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>summe<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>i<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>max<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>choose</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>when</span> <span class="token attr-name">test</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$i <span class="token entity named-entity" title="<">&lt;</span>= $max<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>produkt<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>//Item[AllowanceOrCharge_Line[Code = 'TX']][$i]/TotalQuantity * //Item[AllowanceOrCharge_Line[Code = 'TX']][$i]/AllowanceOrCharge_Line/Amount<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>call-template</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>calc_amount<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>with-param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>summe<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$summe + $produkt<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>with-param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>i<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$i + 1<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>with-param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>max<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$max<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>call-template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>when</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>otherwise</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>format-number($summe, '#.00')<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>otherwise</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>choose</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>stylesheet</span><span class="token punctuation">></span></span> </code></pre> <p>Mit XSLT 2.0/3.0 und for-in-return gestaltet es sich deutlich kompakter. Die einzelnen aufzusummierenden Werte werden darüber innerhalb von sum(…) zunächst vorberechnet:</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>stylesheet</span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>2.0<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsl</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/XSL/Transform<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>output</span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>xml<span class="token punctuation">"</span></span> <span class="token attr-name">version</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1.0<span class="token punctuation">"</span></span> <span class="token attr-name">encoding</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>UTF-8<span class="token punctuation">"</span></span> <span class="token attr-name">standalone</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span> <span class="token attr-name">indent</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>yes<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>strip-space</span> <span class="token attr-name">elements</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>*<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>AllowanceOrCharge_DEEE<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>copy</span><span class="token punctuation">></span></span> <span class="token comment"><!--copy all other nodes--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>apply-templates</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>@* | node()<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>variable</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>tx_anz<span class="token punctuation">"</span></span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>count(//Item[AllowanceOrCharge_Line[Code = 'TX']])<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>if</span> <span class="token attr-name">test</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>$tx_anz >= 1<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Amount</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>value-of</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>format-number(sum(for $item in //Item[AllowanceOrCharge_Line[Code = 'TX']] return $item/TotalQuantity * $item/AllowanceOrCharge_Line/Amount), '#.00')<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Amount</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>if</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>copy</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token comment"><!-- Identity-Template für die nicht explizit benannten Elemente --></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>template</span> <span class="token attr-name">match</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>@* | node()<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>copy</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">xsl:</span>apply-templates</span> <span class="token attr-name">select</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>@* | node()<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>copy</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>template</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">xsl:</span>stylesheet</span><span class="token punctuation">></span></span> </code></pre> <p>Das Ergebnis ist jeweils:</p> <pre><code class="block language-xml">[…] <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Totals</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>AllowanceOrCharge_DEEE</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Code</span><span class="token punctuation">></span></span>TX<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Code</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>Amount</span><span class="token punctuation">></span></span>166.40<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Amount</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>AllowanceOrCharge_DEEE</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>Totals</span><span class="token punctuation">></span></span> […] </code></pre> <p>Grüße,<br> Thomas</p> XSLT 1.0 Sum Mon, 31 Aug 20 11:39:50 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775107#m1775107 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775107#m1775107 <p>WOOOW, danke!!! das hätt ich nie hinbekommen!!! danke danke</p> XSLT 1.0 Sum Mon, 31 Aug 20 19:06:50 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775118#m1775118 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775118#m1775118 <p>Hi Thomas,</p> <p>im online tool lässt sich der code einwandfrei verarbeiten. Aber in meinem ERP erhalte ich folg. Error:</p> <p>XSLT compile error. '<', hexadecimal value 0x3C, is an invalid attribute character. Line 50, position 26.</p> <p><xsl:when test="$i & lt;= $max"></p> <p>Kannst du mir hier evtl. noch helfen?</p> <p>Danke & LG Julian</p> XSLT 1.0 Sum Mon, 31 Aug 20 19:44:04 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775119#m1775119 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775119#m1775119 <p>wenn ich < oder <= verwende kommt auch derselbe Fehler. Komischerweise bei > klappt die Ausgabe?</p> <p>Wie es aussieht funktioniert auch: <xsl:when test="$max >= $i"></p> <p>Mir ist nur nicht klar, warum es andersrum nicht klappt? <xsl:when test="$i <= $max"></p> XSLT 1.0 Sum Mon, 31 Aug 20 21:33:47 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775120#m1775120 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775120#m1775120 <p>Hallo Julian,</p> <blockquote> <p>im online tool lässt sich der code einwandfrei verarbeiten. Aber in meinem ERP erhalte ich folg. Error:</p> <p>XSLT compile error. '<', hexadecimal value 0x3C, is an invalid attribute character. Line 50, position 26.</p> <p><xsl:when test="$i & lt;= $max"></p> </blockquote> <p>Wo kommt das Leerzeichen zwischen & und lt;= her? Stand nicht in meinem Code.</p> <p>< muss als &lt; maskiert werden, das >-Zeichen kann als &gt; stehen, muss aber meistens nicht. > ist nur innerhalb von <![CDATA[ ... ]]>-Abschnitten kritisch, wenn darin ]]> selbst vorkommt (dann als ]]&gt; notieren).</p> <p>Grüße,<br> Thomas</p> XSLT 1.0 Sum Tue, 01 Sep 20 06:00:10 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775123#m1775123 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775123#m1775123 <p>sry, dass Leereichen ist mir reingerutscht - war schon etwas spät. :)</p> <p>Habe den erwähnten Ausschnitt des Codes auf "<xsl:when test="$max >= $i">" ausgebessert und es funktioniert.</p> <p>Passt das auch aus deiner Sicht oder habe ich was übersehen?</p> <p>Egal ob ich "<xsl:when test="$i &lt;= $max">" oder "<xsl:when test="$i <= $max">"versucht habe, kam derselbe Error.</p> <p>LG Julian</p> XSLT 1.0 Sum Tue, 01 Sep 20 06:31:57 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775124#m1775124 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775124#m1775124 <p>Hallo Julian,</p> <blockquote> <p>sry, dass Leereichen ist mir reingerutscht - war schon etwas spät. :)</p> <p>Habe den erwähnten Ausschnitt des Codes auf "<xsl:when test="$max >= $i">" ausgebessert und es funktioniert.</p> <p>Passt das auch aus deiner Sicht oder habe ich was übersehen?</p> <p>Egal ob ich "<xsl:when test="$i &lt;= $max">" oder "<xsl:when test="$i <= $max">"versucht habe, kam derselbe Error.</p> </blockquote> <p>Dann hat wohl der verwendete XSLT-Prozessor eine Macke. "$i &lt;= $max" ist völlig ok (<= nach den XML-Refeln natürlich nicht). Die umgekehrte größer/gleich-Bedingung ist auch legitim, aber prüfe mal die verwendete Umgebung.</p> <p>Grüße,<br> Thomas</p> XSLT 1.0 Sum Tue, 01 Sep 20 06:43:30 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775125#m1775125 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775125#m1775125 <p>danke danke, somit hab ich dieses Problem zumindest gelöst dank deiner Hilfe :)</p> <p>Hab leider wenig Ahnung wie ich das Prüfen bzw. Beheben könnte. Ich arbeite da in einem ERP mit einem integrierten Tool.</p> <p>Kennst du dich da aus, wenn ich Details dazu liefere? Soll ich einen neuen Eintrag im Forum machen?</p> <p>Habe diese Error-Meldung öfters in Google gefunden und meistens wurde einfach (wie in meinem Fall) der Code ein bisschen umgeschrieben. :)</p> <p>LG Julian</p> XSLT 1.0 Sum Tue, 01 Sep 20 07:01:24 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775126#m1775126 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775126#m1775126 <p>Hallo Julian,</p> <blockquote> <p>Hab leider wenig Ahnung wie ich das Prüfen bzw. Beheben könnte. Ich arbeite da in einem ERP mit einem integrierten Tool.</p> <p>Kennst du dich da aus, wenn ich Details dazu liefere? Soll ich einen neuen Eintrag im Forum machen?</p> <p>Habe diese Error-Meldung öfters in Google gefunden und meistens wurde einfach (wie in meinem Fall) der Code ein bisschen umgeschrieben. :)</p> </blockquote> <p>Offenbar ein Software-spezifisches Problem. Also besser den Hersteller fragen, warum XML-Standards nicht korrekt unterstützt werden. Falls möglich, setze einen konformen externen XSLT-Prozessor wie Saxon-HE ein.</p> <p>Grüße,<br> Thomas</p> XSLT 1.0 Sum Tue, 01 Sep 20 08:49:00 Z https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775127#m1775127 https://forum.selfhtml.org/self/2020/aug/31/xslt-1-0-sum/1775127#m1775127 <p>alles klar, danke dir auf jeden Fall für deine mega Unterstützung!!!!</p> <p>LG Julian</p>