XML-Know How

XML-Import

Sobald »echte« XML-Daten vorliegen, diese also wohlgeformt sind, können sie in ein InDesign-Dokument über Datei > XML importieren ... importiert werden. Es erscheint das folgende Fenster:

Abbildung: XML-Importoptionen von InDesign CS3
Abbildung: XML-Importoptionen von InDesign CS3

Im Normalfall wird als Modus Inhalt zusammenführen ausgewählt. Die Option Inhalt anhängen macht in der Verlagswelt selten Sinn, da meist mit vollständigen Werken gearbeitet wird.

Wenn eine Verknüpfung erstellt wird, kann ein verändertes Quelldokument ähnlich wie eine Bild- oder Textverknüpfung bei Bedarf aktualisiert werden. Dies könnte in einem Workflow mit Doppelpflege Sinn machen; im Normalfall soll aber genau diese Doppelpflege beim XML-Satz vermieden werden. Daher wählen Sie diese Option i. d. R. nicht an.

Prinzipiell hilfreich ist hingegen die Möglichkeit, die XML-Daten beim Import über ein XSLT-Stylesheet[2] zu verändern. Sehr häufig werden Sie vor Beginn der Satzarbeiten bestimmte Veränderungen an den Daten vornehmen wollen, die Sie während der Satzarbeiten nicht produktiv leisten können, z. B. die Sortierung von Stichworten eines Lexikons oder auch nur die typographische Vereinheitlichung von Quelldaten. Hierfür ist die Funktion XSLT anwenden gedacht. Leider unterstützt der interne XSLT-Prozessor von InDesign nur einen Ausschnitt aus XSLT 1.0, so dass der Funktionsumfang häufig nicht ausreicht. In diesem Fall werden Sie ein XSLT vor dem Import außerhalb von InDesign anwenden, um mit einem aktuellen Prozessor auf den vollen Funktionsumfang von XSLT zugreifen zu können.

Die Optionen Wiederholte Textelemente kopieren, Nur Elemente importieren, die der vorhandenen Struktur entsprechen und Elemente, Rahmen und Inhalte löschen... sind nur für statische Vorlagen sinnvoll, die mit festen Daten/Objektverknüpfungen arbeiten. Wählen Sie diese Optionen ab.

Das größte Hindernis beim Import von XML-Daten ist der unglückliche Umgang von InDesign mit »Whitespace«. In XML gehören zum Whitespace alle Leerzeichen, Absatzzeichen und Tabulatoren, die zwischen den XML-Elementen stehen (also nicht innerhalb von Textelementen), um bspw. den Code übersichtlicher darzustellen. Dieser Whitespace wird in InDesign standardmäßig konsolidiert, so werden z. B. mehrere Leerzeichen zwischen Elementen nur durch ein einzelnes wiedergegeben. Mit einer HTML-Datei und einem Webbrowser können Sie dieses Verhalten leicht selbst überprüfen. InDesign hingegen stellt  alle Zeichen zwischen Blocklevel-Elementen vollständig dar. Abhilfe schafft die Option Inhalte von Elementen, die nur Leerräume enthalten, nicht importieren. Leider hilft diese meist auch nicht weiter, weil dann gar keine Zeilen­schaltungen mehr vorhanden sind – die XML-Datei besteht nur noch aus einer Zeile und ist praktisch nicht mehr zu bearbeiten.

Die folgende XML-Instanz:

<abs>Absatz1</abs>
<abs>Absatz2 weiter eingerückt</abs>
<abs>Absatz3</abs>

ergibt in InDesign:

Abbildung: Umsetzung in InDesign ohne Whitespace-Entfernen-Option
Abbildung: Umsetzung in InDesign ohne Whitespace-Entfernen-Option
Abbildung: Umsetzung in InDesign mit angewählter Whitespace-Entfernen-Option
Abbildung: Umsetzung in InDesign mit angewählter Whitespace-Entfernen-Option

Beide Fälle liefern nicht das gewünschte Ergebnis. Hier hilft es nur, XML-Dokumente mit Hilfe von XSLT entsprechend vorzubereiten, oder, wenn dies möglich ist, direkt mit richtigem Whitespace anzufordern.

Selbstverständlich können nur wohlgeformte<sup id="cite_ref-3" class="fussnote"><a href="#cite_note-3" rtekeep="1">[3]</a></sup> Instanzen importiert werden. Das heißt hier insbesondere, dass in den Daten enthaltene Entities deklariert sein müssen, denn sie werden beim Import aufgelöst. Die Deklaration von Entities kann, wie in XML allgemein üblich, entweder im Dokument selbst erfolgen, oder die entsprechende DTD muss verknüpft sein.