Math
Kurzbeschreibung
Das XML-Element
<Math>dient zur Durchführung mathematischer Berechnungen innerhalb einer Dokumentvorlage.Die Berechnung erfolgt auf Basis der innerhalb des Elements angegebenen Operanden. Das Ergebnis kann gespeichert, direkt ausgegeben oder gleichzeitig gespeichert und ausgegeben werden.
Dadurch lassen sich Berechnungen direkt innerhalb der Dokumentvorlage durchführen, ohne auf externe Berechnungen angewiesen zu sein.
Einordnung
Bereich: Funktionen
Schwierigkeitsgrad: ⭐⭐⭐☆☆
Vorkenntnisse: Variable · Text · Setter
Empfohlener nächster Artikel: DateAdd
Zweck
Mit <Math> können numerische Berechnungen innerhalb einer Dokumentvorlage durchgeführt werden.
Typische Einsatzgebiete sind:
- Berechnung von Beträgen
- Prozentberechnungen
- Multiplikation von Werten
- Division von Beträgen
- Bildung von Summen
- Zwischenspeichern berechneter Werte
Das Ergebnis kann anschließend
- direkt im Dokument ausgegeben,
- für spätere Berechnungen gespeichert oder
- gleichzeitig gespeichert und ausgegeben werden.
Grundsyntax
<Math
Name="Gesamtbetrag"
Operation="addieren"
Usage="speichern_und_ausgeben">
<Variable Path="custom.1">
</Variable>
<Variable Path="custom.2">
</Variable>
<Text Content="100">
</Text>
</Math>Position innerhalb der Dokumentvorlage
Das XML-Element <Math> erzeugt entweder eine Ausgabe oder einen berechneten Wert.
Es wird deshalb innerhalb eines <Content> verwendet.
<Block>
<Content>
<Math
Name="Gesamtbetrag"
Operation="addieren"
Usage="ausgeben">
...
</Math>
</Content>
</Block>Ablauf der Verarbeitung
Die Render-Engine verarbeitet <Math> schrittweise.
Operanden lesen
│
▼
Reihenfolge übernehmen
│
▼
Operation ausführen
│
▼
Ergebnis berechnen
│
▼
Usage auswerten
│
┌─────┼────────────┐
▼ ▼ ▼
ausgeben speichern speichern_und_ausgebenXML-Wissen
<Math>verarbeitet sämtliche Operanden in der Reihenfolge ihres Auftretens innerhalb des XML-Codes.Es erfolgt keine mathematische Priorisierung wie beispielsweise Punkt-vor-Strich-Rechnung.
Attribute
Math
| Attribut | Beschreibung |
|---|---|
| Name | Name, unter dem das Ergebnis gespeichert werden kann. |
| Operation | Auszuführende Rechenoperation. |
| Usage | Legt fest, ob das Ergebnis gespeichert, ausgegeben oder beides erfolgen soll. |
| Format | Optionales Ausgabeformat des Ergebnisses. |
Name
Über das Attribut Name wird festgelegt, unter welchem Namen das Ergebnis gespeichert wird.
<Math
Name="Gesamtbetrag"
Operation="addieren"
Usage="speichern">Das gespeicherte Ergebnis kann anschließend beispielsweise über <Variable> oder innerhalb eines <If> weiterverwendet werden.
Operation
Die Rechenoperation wird über das Attribut Operation festgelegt.
Zur Verfügung stehen folgende Werte.
| Operation | Beschreibung |
|---|---|
| addieren | Addiert sämtliche Operanden. |
| subtrahieren | Subtrahiert die nachfolgenden Operanden vom ersten Operanden. |
| multiplizieren | Multipliziert sämtliche Operanden miteinander. |
| dividieren | Dividiert den ersten Operanden nacheinander durch die folgenden Operanden. |
| setzen | Übernimmt den ersten Operanden unverändert als Ergebnis. |
| loeschen | Bestandteil der XML-Sprache. Die praktische Verwendung wird zu einem späteren Zeitpunkt ergänzt. |
Usage
Das Attribut Usage legt fest, wie mit dem Berechnungsergebnis umgegangen wird.
| Wert | Beschreibung |
|---|---|
| ausgeben | Das Ergebnis wird direkt im Dokument ausgegeben. |
| speichern | Das Ergebnis wird gespeichert, aber nicht ausgegeben. |
| speichern_und_ausgeben | Das Ergebnis wird gespeichert und gleichzeitig ausgegeben. |
Format
Über Format kann das Ergebnis formatiert ausgegeben werden.
Beispielsweise:
<Math
Format="C"
...
>Die verfügbaren Formatangaben entsprechen den unterstützten Zahlenformaten.
Typische Beispiele sind:
| Format | Bedeutung |
|---|---|
| C | Währungsformat |
| #.###,## | Benutzerdefiniertes Zahlenformat |
Operanden
Die Berechnung erfolgt auf Basis aller XML-Elemente innerhalb des <Math>.
Typische Operanden sind:
<Variable><Text>
Beispiel:
<Math
Name="Summe"
Operation="addieren"
Usage="ausgeben">
<Variable Path="custom.2">
</Variable>
<Variable Path="custom.1">
</Variable>
<Text Content="100">
</Text>
</Math>In diesem Beispiel werden drei Operanden verarbeitet.
Reihenfolge der Berechnung
Die Reihenfolge der Operanden ist entscheidend.
Beispiel:
<Math
Operation="subtrahieren"
Usage="ausgeben">
<Text Content="100">
</Text>
<Text Content="20">
</Text>
<Text Content="5">
</Text>
</Math>Das Ergebnis lautet:
100 - 20 - 5 = 75Nicht dagegen:
100 - (20 - 5)Dasselbe gilt für Divisionen.
Die Berechnung erfolgt stets von links nach rechts entsprechend der Reihenfolge der Operanden im XML-Code.
Hinweis
Die Reihenfolge der Operanden ist insbesondere bei den Operationen
subtrahierenunddividierenvon Bedeutung.
Ergebnis speichern
<Math
Name="MatheRechnung1"
Operation="addieren"
Usage="speichern">
<Variable Path="custom.2">
</Variable>
<Variable Path="custom.1">
</Variable>
<Text Content="100">
</Text>
</Math>Das Ergebnis wird unter dem Namen MatheRechnung1 gespeichert.
Es erfolgt keine Ausgabe im Dokument.
Ergebnis ausgeben
<Math
Format="C"
Name="123"
Operation="addieren"
Usage="ausgeben">
<Variable Path="custom.2">
</Variable>
<Variable Path="custom.1">
</Variable>
<Text Content="100">
</Text>
</Math>Das Ergebnis wird direkt im Dokument ausgegeben.
Ergebnis weiterverwenden
Ein gespeichertes Ergebnis kann anschließend wie eine Variable verwendet werden.
Beispielsweise:
<If
Compare="2000"
DataType="Text"
IsGreater="MatheRechnung1">
<TrueContainer>
<Block>
<Content>
<Text Content="Größer als 2000 €.">
</Text>
</Content>
</Block>
</TrueContainer>
<FalseContainer>
<Block>
<Content>
<Text Content="Kleiner als 2000 €.">
</Text>
</Content>
</Block>
</FalseContainer>
</If>XML-Wissen
Ein unter
Namegespeichertes Berechnungsergebnis steht anschließend innerhalb der Dokumentvorlage wie eine Variable zur Verfügung.Es kann beispielsweise in
<Variable>,<If>,<Case>oder weiteren XML-Elementen verwendet werden.
Typische Fehler
Fehlende Usage
Ohne eine geeignete Usage wird das Ergebnis unter Umständen weder gespeichert noch ausgegeben.
Falsche Reihenfolge
Bei Subtraktion und Division beeinflusst die Reihenfolge der Operanden unmittelbar das Berechnungsergebnis.
Nicht numerische Werte
Alle Operanden sollten numerische Werte liefern.
Textinhalte, die nicht als Zahl interpretiert werden können, führen zu einem fachlich unerwarteten Ergebnis beziehungsweise zu einer fehlerhaften Verarbeitung.
Fehlendes Name bei Speicherung
Soll das Ergebnis später weiterverwendet werden, muss ein eindeutiger Name vergeben werden.
Best Practices
- Verwenden Sie sprechende Namen.
- Nutzen Sie
speichern, wenn das Ergebnis mehrfach benötigt wird. - Verwenden Sie
ausgebenfür einmalige Berechnungen. - Nutzen Sie
speichern_und_ausgeben, wenn beides erforderlich ist. - Achten Sie auf die Reihenfolge der Operanden.
- Verwenden Sie ein geeignetes Zahlenformat.
- Halten Sie Berechnungen übersichtlich und teilen Sie komplexe Berechnungen gegebenenfalls auf mehrere
<Math>-Elemente auf.
Technischer Hinweis
Während der Dokumenterzeugung verarbeitet die Render-Engine sämtliche Operanden innerhalb des <Math> in ihrer Reihenfolge.
Anschließend wird die angegebene Rechenoperation ausgeführt.
Abhängig vom Attribut Usage wird das Ergebnis gespeichert, ausgegeben oder beides.