Block
Block
Einordnung
Bereich: Dokumentstruktur
Schwierigkeitsgrad: ⭐⭐☆☆☆
Vorkenntnisse: Body
Empfohlener nächster Artikel: Content
Zweck
Das XML-Element <Block> bildet die grundlegende Struktureinheit einer Dokumentvorlage.
Ein Block fasst logisch zusammengehörende Inhalte zu einem Dokumentabschnitt zusammen. Dabei kann ein Block sowohl einfachen Fließtext als auch komplexe Inhalte wie Tabellen, Bilder, Bedingungen oder Variablen enthalten.
Nahezu jeder sichtbare Inhalt einer Dokumentvorlage befindet sich innerhalb eines <Block>-Elements.
Eigenschaften
| Eigenschaft | Wert |
|---|---|
| Enthält Attribute | Nein |
| Enthält Unterelemente | Ja |
| Eigener sichtbarer Inhalt | Nein |
Mehrfach innerhalb eines <Body> möglich |
Ja |
<Block> in <Block>erlaubt |
Nein |
Aufbau
Ein Block besteht in der Regel aus zwei Bereichen:
- Content
- BlockProperties
Der grundsätzliche Aufbau sieht wie folgt aus:
<Block>
<Content>
...
</Content>
<BlockProperties>
...
</BlockProperties>
</Block>Beide Bereiche übernehmen unterschiedliche Aufgaben.
Während <Content> den eigentlichen Dokumentinhalt beschreibt, definiert <BlockProperties> dessen Darstellung und Verhalten.
Content
Innerhalb des Elements <Content> befinden sich die eigentlichen Dokumentelemente.
Beispielsweise:
- Texte
- Variablen
- Bilder
- Barcodes
- MetaFormatter
- Referenzen
- weitere XML-Elemente
Ein Block ohne <Content> besitzt keinen darstellbaren Inhalt.
Die Beschreibung des Elements erfolgt im Artikel Content.
BlockProperties
Über <BlockProperties> werden Eigenschaften definiert, die für den gesamten Block gelten.
Hierzu gehören beispielsweise:
- Absatzformatierungen
- Textstil
- Nummerierungen
- Rahmen
- Hintergrundfarben
- Einzüge
- Ausrichtungen
- Seitenumbrüche
Ein Block kann auch ohne <BlockProperties> verwendet werden.
In diesem Fall verwendet die Render-Engine die Standarddarstellung.
Die einzelnen Eigenschaften werden in den entsprechenden Fachartikeln beschrieben.
Frame
Eine häufig verwendete Eigenschaft innerhalb der <BlockProperties> ist <Frame>.
Mit einem Frame kann der gesamte Block an einer festen Position innerhalb der Seite dargestellt werden.
<Block>
<Content>
<Barcode
Symbology="QR"
Height="2000000"
Width="2000000">
</Barcode>
</Content>
<BlockProperties>
<Frame
PositionX="100"
PositionY="100">
</Frame>
</BlockProperties>
</Block>PositionX bestimmt den horizontalen Abstand vom linken Seitenrand.
PositionY bestimmt den vertikalen Abstand vom oberen Seitenrand.
Je größer der jeweilige Wert ist, desto weiter wird der gesamte Block nach rechts beziehungsweise nach unten verschoben.
Hinweis
<Frame>positioniert immer den vollständigen<Block>.Befinden sich innerhalb des Blocks beispielsweise Texte, Bilder oder Barcodes, werden diese gemeinsam an der angegebenen Position ausgegeben.
Typische Einsatzgebiete
Ein <Frame> wird häufig verwendet für:
- Barcodes und QR-Codes
- Texte auf Formularen
- Texte über Hintergrundbildern
- frei positionierte Informationsfelder
- Etiketten und Anschriften
Dokumentabschnitte
Ein Block beschreibt immer einen logisch zusammengehörenden Abschnitt des Dokuments.
Typische Beispiele sind:
- eine Überschrift
- ein Absatz
- ein Hinweis
- eine Tabelle
- ein Adressblock
- ein Bild
- eine Unterschrift
- eine Aufzählung
Größere Dokumente bestehen häufig aus mehreren hundert Blöcken.
Verarbeitung
Die Render-Engine verarbeitet die Blöcke in der Reihenfolge ihres Auftretens innerhalb des <Body>.
Jeder Block wird vollständig verarbeitet, bevor mit dem nächsten Block fortgefahren wird.
Dadurch entspricht die Reihenfolge der Blöcke grundsätzlich der Reihenfolge im späteren Dokument.
Verschachtelung
Ein Block kann unterschiedliche XML-Elemente enthalten.
Hierzu gehören beispielsweise:
TextVariableReferencePictureFormatterBarcodeMetaFormatter
Darüber hinaus können innerhalb eines Blocks auch Steuerstrukturen verwendet werden, beispielsweise:
IfCaseRepeat
Der Block bildet somit den Container, innerhalb dessen sowohl Inhalte als auch Dokumentlogiken zusammengeführt werden.
Typische Verwendung
Ein neuer Block sollte immer dann erstellt werden, wenn sich ein neuer logisch zusammengehörender Dokumentabschnitt ergibt.
Beispiele:
- Wechsel der Formatierung
- neuer Absatz
- neue Tabelle
- neuer Hinweis
- eigenständiger Informationsbereich
Die Aufteilung in mehrere kleine Blöcke erhöht die Übersichtlichkeit der Dokumentvorlage erheblich.
XML-Wissen
Ein Block entspricht nicht zwangsläufig einem Absatz im späteren Dokument.
Vielmehr beschreibt ein Block einen logisch zusammengehörenden Dokumentabschnitt, der Inhalt und Darstellung gemeinsam kapselt.
Dadurch lassen sich einzelne Bereiche unabhängig voneinander entwickeln, formatieren und pflegen.
Typische Nachbarn
Ein Block enthält häufig folgende XML-Elemente:
ContentBlockProperties
Innerhalb des <Content> befinden sich anschließend häufig:
TextVariablePictureFormatterReferenceBarcodeMetaFormatter
Best Practices
- Verwenden Sie für jeden logisch zusammengehörenden Dokumentabschnitt einen eigenen Block.
- Halten Sie Blöcke möglichst klein und übersichtlich.
- Verwenden Sie
<BlockProperties>ausschließlich für Eigenschaften, die den gesamten Block betreffen. - Vermeiden Sie unnötig große Blöcke mit vielen unterschiedlichen Aufgaben.
- Strukturieren Sie umfangreiche Dokumentvorlagen durch mehrere aufeinanderfolgende Blöcke.
- Positionieren Sie frei platzierte Inhalte vorzugsweise über einen
<Frame>innerhalb der<BlockProperties>anstatt über Leerzeilen oder Einrückungen.
Hinweis
Ein sauber strukturierter Aufbau mit mehreren überschaubaren Blöcken erleichtert sowohl die Entwicklung als auch die spätere Wartung einer Dokumentvorlage erheblich.
Insbesondere bei umfangreichen Dokumentvorlagen verbessert eine feingranulare Blockstruktur die Lesbarkeit des XML-Codes und erleichtert die Fehlersuche.
Technischer Hinweis
Der <Block> besitzt selbst keine Attribute.
Sein Verhalten wird vollständig über die enthaltenen XML-Elemente sowie die Konfiguration innerhalb der <BlockProperties> bestimmt.
Während der Dokumenterzeugung verarbeitet die Render-Engine jeden Block als eigenständigen Dokumentabschnitt und fügt die Ergebnisse entsprechend ihrer Reihenfolge innerhalb des <Body> zum fertigen Dokument zusammen.