Zum Inhalt springen
XML
Dynamische Tablen

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

                └── TableCell

Innerhalb 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

.current

Beispielsweise:

<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


Summenzeile

Dadurch 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

Zuletzt aktualisiert am