Vererbungskonzept
Jede Vorlage bzw. jeder Vorlagentyp bringt seinen Teil zur Vervollständigung des Enddokumentes mit. Zum Beispiel liefert die Style-Vorlage alle Schrift-Formatierungen. Die verschiedenen Vorlagentypen können so beliebig kombiniert und jederzeit ausgetauscht oder aktualisiert werden. Dadurch werden Redundanzen im Vorlagenbau vermieden. Die Dokumente werden immer zur Laufzeit neu generiert.
Caution
Werden Ihre Vorlagen und/oder Textbausteine laufend verändert, kann nicht gewährleistet werden, dass in Vergangenheit generierte und abgespeicherte Dokumente beim erneuten Aktualisieren nach wie vor funktionieren. Grund dafür ist, dass das Dokument unter anderen Umständen abgespeichert wurde und beim erneuten Öffnen und Aktualisieren auf die neue Version derjenigen Vorlage zeigt.
Diese Grafik zeigt die maximale Vererbungsstufe – jede Ebene ist optional.
Die Dokument-Pipeline enthält eine vorlagenspezifische Liste von Funktionen, die als PlugIns realisiert sind und beim Starten von OneOffixx geladen werden. Welche Dokumentfunktionen in welcher Reihenfolge in einer Vorlage verwendet werden, wird im Client in der Administrationsansicht vom Vorlagenbearbeiter festgelegt. Dokumentfunktionen enthalten für sich geschlossene Prozeduren, die auf das Dokument, auf Schnittstellen etc. angewendet werden.
Note
Wir verwenden die Begriffe "höher" und "niedriger", gemäss obenstehender Grafik:
Höher bedeutet, dass die Dokumentfunktion z. B. auf einem Style definiert wurde.
Niedriger bedeutet, dass die Dokumentfunktion näher am eigentlichen Dokument definiert wurde.
Vererbung von Dokumentfunktionen
Alle Dokumentfunktionen, die im Vorlagenvererbungssystem auf den verschiedenen Ebenen an den Vorlagen konfiguriert sind, werden in einer Kette zusammengefasst. Dabei wird jede Dokumentfunktion nur einmalig hinzugefügt. Fügt man z. B. einer Funktionsvorlage eine Dokumentfunktion hinzu, wird diese am Ende der Ausführungsreihenfolge ausgeführt.
Es gibt allerdings Ausnahmen: Systembedingt werden manche Dokumentfunktionen automatisch ans Ende der Kette verschoben. Das betrifft zum Beispiel die Dokumentfunktionen "Skripte" oder "Bibliothek für erweitertes Binding".
Aktive bzw. deaktivierte Dokumentfunktionen
Definiert man die Dokumentfunktionen "Dokument-Parameter" auf der Style-Ebene, haben alle davon erbenden Vorlagen ebenfalls diese Funktion automatisch mitangehängt. Deaktiviert man den Dokument-Parameter nun in der Inhaltsvorlage, wird diese für die Dokumenterzeugung insgesamt deaktiviert.
Konfiguration überschreiben
Definiert man eine Dokumentfunktion auf verschiedenen Ebenen, greift für die meisten Dokumentfunktion folgende Regel: Die Konfiguration, die näher am Enddokument konfiguriert wurde, wird in der Document Engine gewählt.
Ausnahme dieser Regel ist z. B. die Dokumentfunktion "Skripte": Hier werden die verschiedenen DataNodes von jeder Stufe zusammengesetzt, sodass am Ende alle Skripte von allen Ebenen durchgelaufen werden können.
Transformation
Neben dem Überschreiben bzw. Aktivieren/Deaktivieren einer höheren Dokumentfunktion, gibt es noch die Möglichkeit, gezielt Konfigurationseinträge von einer höheren Ebene (z. B. Style) zu überschreiben. Diese Art der Konfiguration erlaubt es, sehr genaue Änderungen an einer bestehenden Konfiguration zu machen. Das erfordert jedoch eine Einarbeitung in die "XDT"-Transformationen.
Eine Transformation wird nur gestartet, wenn man den folgenden XML Namespace anwendet:
xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
Ohne diesen XML-Namespace wird der normale Merge-Mechanismus genutzt, was meistens die ganze Konfiguration mit dem Höherliegenden ersetzt.
Szenario:
Layoutvorlage mit Dokumentfunktion "Formatierung":
<DocumentFunction>
<!-- Parametrierung der Überschriften -->
<Group name="Headings">
<Definition type="Heading" level="1" style="Überschrift 1" />
<Definition type="Heading" level="2" style="Überschrift 2" />
<Definition type="Heading" level="3" style="Überschrift 3" />
<Definition type="Heading" level="4" style="Überschrift 4" />
</Group>
<!-- Parametrierung der Tabulatoren -->
<Group name="Indents" maxListLevels="4" />
<!-- Parametrierung der Listen, Aufzählungen und Nummerierungen -->
<Group name="NumberingStyles">
<Definition type="Numeric" tabPosition="1" style="ListNumeric" />
<Definition type="Alphabetic" tabPosition="1" style="ListAlphabetic" />
<Definition type="Bullet" tabPosition="1" style="ListBullet" />
<Definition type="Line" tabPosition="1" style="ListLine" />
</Group>
<!-- Parametrierung der Nummerierungsoptionen -->
<Group name="NumberingBehaviors">
<Definition type="Increment" style="ListNumeric" />
<Definition type="Decrement" />
<Definition type="ResetChapter" style="Überschrift 1" />
<Definition type="ResetList" style="ListNumeric" />
</Group>
<!-- Parametrierung der Formatierungsoptionen -->
<Group name="Styles">
<Definition type="Standard" style="Standard" />
<Definition type="Bold" style="" />
<Definition type="Italic" style="" />
<Definition type="Underline" style="" />
</Group>
<!-- Parametrierung der weiteren Formatierungsoptionen -->
<Group name="CustomStyles">
<Category id="Headings">
<Label>Überschriften</Label>
<Definition type="Titel" style="Titel">
<Label>Titel</Label>
</Definition>
<Definition type="Untertitel" style="Untertitel">
<Label>Untertitel</Label>
</Definition>
</Category>
<Category id="Various">
<Label>Diverses</Label>
<Definition type="Hervorhebung" style="Hervorhebung">
<Label>Hervorhebung</Label>
</Definition>
</Category>
</Group>
</DocumentFunction>
Nun sollen in einer bestimmten Word-Vorlage andere Überschriften eingesetzt werden. Ohne Transformation müsste der ganze Inhalt zwischen den DocumentFunction
-Tags kopiert und anschliessend abgeändert werden. Mit Transformation kann nur ein Ausschnitt aus der Konfiguration definiert werden. Dabei werden die Abschnitte folgend ergänzt:
- werden ganze Gruppen transformiert:
xdt:Transform="Replace" xdt:Locator="Match(name)
- wird nur eine einzelne Zeile transformiert:
xdt:Transform="Replace" xdt:Locator="Match(type)"
Note
Beachten Sie den XML-Namespace: xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
Hier ein paar Beispiele:
<DocumentFunction xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <!-- ← Indiziert, dass hier transformiert wird. -->
<!-- Überschreiben der Überschriften | ganze Gruppe -->
<Group name="Headings" xdt:Transform="Replace" xdt:Locator="Match(name)">
<Definition type="Heading" level="1" style="Heading1NotNumbered" />
<Definition type="Heading" level="2" style="Heading2NotNumbered" />
<Definition type="Heading" level="3" style="Heading3NotNumbered" />
<Definition type="Heading" level="4" style="Heading4NotNumbered" />
</Group>
<!-- Überschreiben der Tabulatoren | ganze Gruppe -->
<Group name="Indents" maxListLevels="2" xdt:Transform="Replace" xdt:Locator="Match(name)" />
<!-- Überschreiben der Nummerierungsoptionen | einzelne Zeile -->
<Group name="NumberingBehaviors">
<Definition type="Increment" style="ListAlphabetic" xdt:Transform="Replace" xdt:Locator="Match(type)" />
</Group>
<!-- Überschreiben der Formatierungsoptionen | einzelne Zeile -->
<Group name="Styles">
<Definition type="Standard" style="Kein Leerraum" xdt:Transform="Replace" xdt:Locator="Match(type)" />
</Group>
<!-- Überschreiben der weiteren Formatierungsoptionen | ganze Gruppe -->
<Group name="CustomStyles" xdt:Transform="Replace" xdt:Locator="Match(name)">
<Category id="Headings">
<Label>Überschriften</Label>
<Definition type="Titel" style="Titel">
<Label>Titel</Label>
</Definition>
</Category>
</Group>
</DocumentFunction>
Man kann auch mehrere Transformationen hintereinander verketten, sodass z. B. eine Funktionsvorlage die bestehende Konfiguration nochmals transformiert:
<DocumentFunction xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<Group name="NumberingBehaviors">
<Definition type="Increment" style="NumericListStyleOther" xdt:Transform="Replace" xdt:Locator="Match(type)" />
</Group>
</DocumentFunction>
Eine vollständige Dokumentation über alle XDT-Aktionen befindet sich im MSDN.