Dynamische Tablen
Kurzbeschreibung
Dynamische Tabellen entstehen durch die Kombination von
<Table>und<Iterate>.Dabei wird für jeden Datensatz eines Datablocks automatisch eine neue Tabellenzeile erzeugt.
Einordnung
Bereich: Inhalte → Tabellen
Schwierigkeitsgrad: ⭐⭐⭐⭐☆
Vorkenntnisse: Table · TableRow · TableCell · Iterate
Siehe auch
- Iterate
- Table
- TableCell
Zweck
Nicht jede Tabelle besitzt eine feste Anzahl an Zeilen.
Oft hängt die Anzahl der auszugebenden Datensätze vom jeweiligen Auftrag ab.
Beispiele:
- Rechnungspositionen
- Kontoauszüge
- Leistungslisten
- Medikamentenlisten
- Buchungen
Hierfür werden dynamische Tabellen verwendet.
Das Prinzip
Eine dynamische Tabelle besteht aus zwei Bestandteilen.
Datablock
│
▼
Iterate
│
▼
TableRow
│
▼
TableCell<Iterate> verarbeitet jede Zeile des Datablocks.
Für jede verarbeitete Zeile wird anschließend eine neue Tabellenzeile erzeugt.
Aufbau
Der grundsätzliche Aufbau sieht wie folgt aus.
Table
└── Iterate
└── TableRow
└── TableCellInnerhalb jeder Tabellenzelle können anschließend Variablen der aktuellen Datensatzzeile ausgegeben werden.
Zugriff auf die aktuelle Zeile
Während der Schleife steht immer die aktuell verarbeitete Zeile zur Verfügung.
Der Zugriff erfolgt über
.currentBeispielsweise:
<Variable Path="Leistungen.current.Betrag">
</Variable>Für jede Schleifenrunde wird automatisch der Betrag der jeweils aktuellen Zeile ausgegeben.
Beispiel
Angenommen, ein Datablock enthält folgende Daten.
Leistung Betrag
A 12,50 €
B 8,40 €
C 4,20 €Während der Dokumenterzeugung verarbeitet <Iterate> diese Zeilen nacheinander.
Das erzeugte Dokument enthält anschließend drei Tabellenzeilen.
Leistung Betrag
A 12,50 €
B 8,40 €
C 4,20 €Die Anzahl der Tabellenzeilen richtet sich ausschließlich nach den vorhandenen Datensätzen.
Feste und dynamische Bereiche kombinieren
Eine Tabelle kann sowohl feste als auch dynamische Bereiche enthalten.
Beispielsweise:
Überschrift
↓
Spaltenüberschrift
↓
Iterate
↓
SummenzeileDadurch lassen sich klassische Positionslisten oder Kontoauszüge einfach aufbauen.
Bedingungen innerhalb einer Tabelle
Auch innerhalb einer dynamischen Tabelle können Bedingungen verwendet werden.
Beispielsweise:
<If><Case>
Dadurch können einzelne Tabellenzeilen abhängig vom Inhalt unterschiedlich dargestellt werden.
Leere Datablocks
Ein Datablock kann auch keine Datensätze enthalten.
In diesem Fall erzeugt <Iterate> keine Tabellenzeilen.
Je nach gewünschtem Dokument kann anschließend beispielsweise
- ein Hinweis,
- ein Alternativtext oder
- gar keine Ausgabe
erfolgen.
Typische Einsatzgebiete
Dynamische Tabellen werden häufig verwendet für:
- Rechnungspositionen
- Kontoauszüge
- Leistungsübersichten
- Buchungslisten
- Arzneimittelübersichten
- beliebige Positionslisten
Best Practices
- Die Tabellenüberschrift außerhalb des
<Iterate>platzieren. - Innerhalb des
<Iterate>ausschließlich die eigentlichen Datensätze erzeugen. - Aussagekräftige Spaltenüberschriften verwenden.
- Datablocks möglichst vollständig dokumentieren.
- Tabellen mit unterschiedlichen Datensatzmengen testen.
Developer-Tipp
Denken Sie bei dynamischen Tabellen immer in zwei Bereichen:
- feste Inhalte außerhalb des
<Iterate>- wiederkehrende Inhalte innerhalb des
<Iterate>
XML-Wissen
Eine Tabellenzeile wird nicht mehrfach im XML definiert.
Vielmehr wird dieselbe XML-Struktur durch <Iterate> für jeden Datensatz erneut ausgeführt.
Dadurch können mit wenig XML-Code beliebig lange Tabellen erzeugt werden.
Typische Fehler
Überschrift innerhalb des Iterate
Befindet sich die Tabellenüberschrift innerhalb des <Iterate>, wird sie für jede Tabellenzeile erneut ausgegeben.
Falscher Datablock
Ist im Attribut Path des <Iterate> ein falscher Datablock angegeben, werden keine Daten ausgegeben.
Aktuelle Zeile vergessen
Innerhalb einer Schleife sollte auf die aktuelle Datensatzzeile (.current) zugegriffen werden.
Nur so werden die Werte des jeweils verarbeiteten Datensatzes ausgegeben.
Fazit
Die Kombination aus <Table> und <Iterate> bildet die Grundlage nahezu aller dynamischen Tabellen innerhalb von intracon.
Sie ermöglicht es, beliebig viele Datensätze automatisch und übersichtlich in Tabellenform darzustellen.
Empfohlener nächster Artikel: Iterate