Allgemein Automatisierung InDesign Javascript XML

Eine Odyssee: XML sortieren mit XSL und InDesign …

Die schlechte Nachricht zuerst: Es geht nicht! Zumindest nicht mal eben „so einfach“. Die gute Nachricht allerdings: Irgendwie geht’s halt doch! Aber, ich fange mal lieber ganz vorne am Anfang an:
Für ein umfangreiches Projekt lieferte ein Kunde XML-Daten an. Diese Daten (Namen und Adressen) sollten alphabetisch sortiert in InDesign erscheinen. Für solche Anwendungsgebiete bietet sich XSL-T, mit dem man die Struktur einer XML-Datei beim Import beeinflussen kann.
Besonders interessant in diesem Zusammenhang:

<xsl:sort>
<xsl:sort select=“Nachname“ order=“ascending“ data-type=“text“ xml:lang=“de“ case-order=“upper-first“/>  Erste Priorität für Nachnamen
<xsl:sort select=“Vorname“ order=“ascending“ data-type=“text“ xml:lang=“de“ case-order=“upper-first“/>    Zweite Priorität für Vornamen

Die böse Überraschung kam dann recht schnell: InDesign meckert beim XML-Import (dort kann man eine XSL-Datei für die Bearbeitung angeben), internationale Sortierung sei nicht möglich, es sortiere stattdessen „nativ“. Aha, nativ also 🙂
Nativ in diesem Zusammenhang heißt „schwedisch“. Zuerst von a bis z und dann ä, ö, ü und ß 🙁

Abhilfe schaffte Oxygen, ein toller XML/XSL-Editor – der sogar deutsch sortieren kann – Die Sortierung dort sieht dann folgendermaßen aus:
a/ä, b bis n o/ö, p bis r, s/ß, t, u/ü, v-z (Sortierung nach DIN 5007-1, wie z.B. im Duden). D.h. Ä wird wie A interpretiert.

Dummerweise werden Adressen in Deutschland aber nach DIN 5007-2 sortiert, ein ä muss also als ae interpretiert werden.
XSL bietet zwar die Möglichkeit, character-maps zu erstellen (also ein ä als ae abzubilden), dummerweise geschieht das aber erst nach dem Sortieren.
So aber geht es:

  1. Die XML-Datei als erstes in Oxygen öffnen. Per Suchen und Ersetzen alle ä in -ae- wandeln, alle ß in -ss- usw. Der Bindestrich hierbei ist wichtig, denn erstens wird er beim späteren Sortieren ignoriert, zweitens kann nach dem Sortieren in InDesign dann nach -ae- gesucht werden, wobei zum Beispiel ein Wort wie Baecker unangetastet bleibt, da es ja keine Bindestriche beinhaltet.
  2. Um auf Nummer sicher zu gehen, sortiere ich dann innerhalb von Oxygen um und schreibe eine neue, sortierte XML-Datei.
  3. Diese neue XML-Datei importiere ich in InDesign.
  4. Nun wandle ich per Suchen&Ersetzen alle -ae- in -ä-, alle -oe- in ö, -Ae- in Ä usw.

Zugegeben, das Ganze hat eher Workaround-Charakter, aber es funktioniert. Für kommende InDesign-Versionen wünsche ich mir auf jeden Fall eine besserer XSL-Unterstützung 🙂

Schreibe einen Kommentar