Welche Möglichkeit gibt es, in mehr als 600 Anschlussgrafiken im Mittel je 4 Farbbezeichnungen zu ändern?
Aufgabe
In über 600 Anschlussgrafiken sollen die Farbbezeichnungen der Anschlüsse so geändert werden, dass sie der Norm DIN IEC 60757 entsprechen.
Beispiel vorher:

Beispiel nachher:

Die Grafiken liegen im Format *.eps vor, die in Adobe Illustrator erstellt worden waren.
Wie ändert man mit möglichst wenig Aufwand 600 Grafikdateien?
Dazu drei mögliche Wege.
Möglichkeit 1: Grafikdateien ändern
Jede Grafik im Adobe Illustrator öffnen und die Farbbezeichnungen ändern.
Aufwand: geschätzt einige Minuten pro Grafik (600 Stück).
Möglichkeit 2: Ersetzungsliste erstellen und gesammelt ersetzen
Voraussetzung: alle auftretenden Änderungen sammeln und eine Ersetzungsliste erstellen mit Farbbezeichnung vorher/nachher.
- Mit einer Adobe Illustrator Aktion alle eps-Dateien öffnen und als svg-Datei exportieren.
- Mehrere/alle svg-Dateien mit Notepad++ öffnen und mit Suchen-Ersetzen (STRG H) die gesammelten Ersetzungen durchführen.
- Änderungen in den svg-Dateien prüfen.
- Mit einer Adobe Illustrator Aktion alle geänderten Dateien öffnen und wieder als eps-Datei abspeichern.
Aufwand: ca. die Hälfte des Aufwands von Möglichkeit 1.
Möglichkeit 3: xsl-Transformation anwenden
Eine xsl-Transformation auf die Dateien anwenden (für xml-Spezialisten).
Voraussetzung: Alle notwendigen Änderungen sammeln und eine Ersetzungsliste erstellen: Farbbezeichnung vorher/nachher.
- Mit einer Adobe Illustrator Aktion alle eps-Dateien öffnen und als svg-Datei exportieren.
- xslt-Script erstellen (s. Code), das die Inhalte der svg-Datei kopiert, dabei nach den zu ersetzenden Farbbezeichnungen sucht und diese ersetzt.
- Dieses xslt-Script über Batch-Aufruf auf alle svg-Dateien anwenden. Eine Liste von Dateinamen, die sich in einem Dateiverzeichnis befinden erhält man hiermit.
- Die geänderten svg-Dateien prüfen.
- Mit einer Adobe Illustrator Aktion alle geänderten svg-Dateien öffnen und wieder als eps-Datei abspeichern.
Aufwand: ca. ein Drittel des Aufwandes von Möglichkeit 1.
So sind die Farben in der svg-Datei abgebildet:
<text transform="translate(307.83 421.72)" style="isolation:isolate;font-size:7px;font-family:SICKFranklin-Regular, SICK Franklin">b<tspan x="3.76" y="0" style="letter-spacing:-0.0048828125em">r</tspan><tspan x="6.03" y="0">n</tspan></text>
<text transform="translate(308.81 436.45)" style="isolation:isolate;font-size:7px;font-family:SICKFranklin-Regular, SICK Franklin">wht</text>
<text transform="translate(308.53 451.18)" style="isolation:isolate;font-size:7px;font-family:SICKFranklin-Regular, SICK Franklin">blu</text>
Hier noch der xslt-Code
<!-- erst mal alles Kopieren: Knoten und Attribute -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<!-- die Faelle fuer die Farbersetzungen abfangen und die Farbbezeichnungen austauschen -->
<xsl:template match="text()">
<xsl:choose>
<xsl:when test="contains(current(),'brn')">
<xsl:value-of select="translate(current(),'brn','BN')"/>
</xsl:when>
<xsl:when test="contains(current(),'blu')">
<xsl:value-of select="translate(current(),'blu','BU')"/>
</xsl:when>
<xsl:when test="contains(current(),'wht')">
<xsl:value-of select="translate(current(),'wht','WH')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>