XML Export und Reimport

Der Import von XML-Daten in InDesign richtet sich ja nach der etwas eigenwilligen Interpretation von XML durch Adobe. Wobei die grundlegende Problematik des Whitespace-Handling im XML-Standard zu wünschen übrig lässt und den Applikationsanbieter bezüglich des Renderings etwas im Regen stehen lässt. Hat man die Probleme beim Import umschifft – im wesentlichen muss beachtet werden, dass jeglicher Whitespace im InDesign Dokument umgesetzt wird – erlebt man beim Export die nächste Überraschung.

Die Betrifft im wesentlich zwei Bereiche:

  1. Der Unicode Codepoint des Zeilenwechsel wird in der Info-Palette von InDesign als  &#x000D (Carriage Return) der Soft-Return als  &#x000A (Line Feed) angezeigt. Im exportieren XML Dokument wird für den Zeilenwechsel der etwas unübliche Paragraph Separator &#x2029 für einen Soft-Return der Line Separator &#x2028 verwendet. Eigentlich ist die Idee gar nicht schlecht eindeutige und dafür vorgesehene Unicode Zeichen zu verwenden. Problematisch ist dabei jedoch, dass die Zeichen von fast keinem Programm interpretiert werden und somit in Text-/XML-Editoren bestenfalls als Kästchen dargestellt werden.
    Außerdem sind es keine zugelassenen Whitespace Zeichen. Da in InDesign die Formatierung von Block-Level-Elementen sinnvollerweise über eben diese Zeichen geregelt wird, steht man vor dem Dilemma entweder nicht valide Daten zu bekommen oder die Zeilenwechsel in Text-Elementen unterzubringen – wo man sie allerdings auch nicht haben will.
    Um valide Daten zu bekommen hilft ab CS3 die Option im Exportdialog die Zeilenwechsel als Leerzeichen auszugeben.
  2. Der zweite Problembereich sind die Spezialzeichen von InDesign die teilweise gar nicht in Unicode abbildbar sind. Diese werden nämlich einfach verworfen oder bei entsprechende Export Option als Leerzeichen umgesetzt. Glücklicherweise betrifft das nur wenige Zeichen:
    1. Den nach Rechts austreibenden Tabulator
    2. Das Einzug Hier Zeichen
    3. Das Endzeichen für geschachtelte Formate
    4. Alle manuellen Spalten- und Seitenwechsel.
    5. Automatisch generierte Seitenzahlen und Section Marker

In beiden Fällen hätten sich Processing-Instrucions angeboten, damit wäre eine exportierte XML-Datei identisch wieder reimportierbar geworden. Und ganz nebenbei wäre mit einem solchen Set von Processing Instrucitons der Import von XML-Daten übersichtlich und prozesssicher umsetzbar.

Für eine Übersicht über die verwendbaren Sonderzeichen innerhalb von InDesing habe ich ein kleines Skript entworfen welches den SpecialCharacters Enumerator auswertet. Enstanden ist ein Dokument mit allen InDesign-Sonderzeichen. Dieses habe ich dann als XML exportiert, mit einem kleinen XSLT um die Unicode Codepoints erweitert und dann reimportiert. Das Ergebnis kann man hier herunterladen.