ThomasM: Summe von Werten, wo erst noch etwas abgeschnitten werden muss

Beitrag lesen

Hallo Kai,

Ich habe gelesen dass man Variablen nicht nach der Initialisierung in XSL verändern kann. Anfangs dachte ich wenn ich eine globale Variable nehme, vielleicht kann ich sie dann selbst verändern.

Nein, (auch globale) Variablen lassen sich nach dem Festlegen nicht ändern, es sind quasi Konstanten. Man kann Variablen jedoch innerhalb von xsl:for-each, xsl:template usw. jeweils neu belegen.

Dein eigentliches Summierungsproblem lässt sich mit XSLT 2.0 elegant lösen:

<xsl:template match="table">  
  <xsl:value-of select="fn:sum(for $cw in tgroup/colspec/@colwidth return fn:number(fn:substring-before($cw, '*')))"/>  
</xsl:template>

Ergebnis: 3.02

Mit den Mitteln von XSLT 1.0 kann das mit einem benannten Template und xsl:call-template sowie xsl:with-param und xsl:param etwas aufwändiger erreicht werden.

Grüße,
Thomas