Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » InDesign: XML-Import und CDATA-Abschnitte

InDesign: XML-Import und CDATA-Abschnitte

Peter Sauseng
Beiträge gesamt: 399

11. Jan 2019, 14:49
Bewertung:

gelesen: 1569

Beitrag als Lesezeichen
Hallo zusammen!

Ich konvertiere per XSLT XML-Daten so, dass sie in InDesign wie gewünscht ankommen, das betrifft verschiedene Element-Zuordnungen, Behandlung des Weißraums u.v.a.
Das funktioniert bei diesen Projekten schon jahrelang sehr gut.

Nun erhalte ich aber XML-Daten mit CDATA-Abschnitten.
In diesen CDATA-Abschnitten sind verschiedene HTML-Befehle wie <ul>,<li>,<a> u.a. eingefügt.

CDATA-Abschnitte werden bei der Konvertierung nicht analysiert und unverändert in die neue XML-Datei eingefügt. Damit diese Abschnitte in InDesign richtig ankommen, wäre einiges zu verändern.

Weiß jemand, wie man per XSLT doch auf diese CDATA-Abschnitte zugreifen kann, um diverse Konvertierungen (z.B. die Entfernung von Einrückungen) durchzuführen?

Mir fällt jetzt nur einmal ein, dass ich nach der ersten Konvertierung eine weitere Konvertierung starte, die auf diese Elemente eingeht, die nach der ersten Konvertierung ja keine CDATA-Elemente mehr sind.

Gruß, Peter

---------------------------------------------------------------------
InDesign CC 2018 | Windows 10 Pro (64-bit)

InDesign: XML-Import und CDATA-Abschnitte / GREP-Problem

Peter Sauseng
Beiträge gesamt: 399

25. Jan 2019, 10:49
Bewertung:

gelesen: 1335

Beitrag als Lesezeichen
Das Problem mit dem Weißraum bei diesen CDATA-Texten kann man mit normalize-space ganz gut lösen. Ich füge dann nur dort einen Zeilenumbruch mit &#10; ein, wo es notwendig ist.

Ein neues Problem habe ich aber mit Listen.
Ich würde gerne zwischen Hauptlisten und Unterlisten unterscheiden.

Z.B. bei Unterlisten <li2> statt <li> einfügen, damit ich in InDesign eine andere Formatierung zuweisen kann.

Leider habe ich keine passenden Regular Expressions gefunden.

Beispiel:
Code
<ul> 
<li>Hauptliste: Punkt 1</li>
<li>Hauptliste: Punkt 2
<ul>
<li>Unterliste: Punkt 1</li>
<li>Unterliste: Punkt 2</li>
</ul>
</li>
<li>Hauptliste: Punkt 3</li>
<li>Hauptliste: Punkt 4
<ul>
<li>Unterliste 2: Punkt 1</li>
<li>Unterliste 2: Punkt 1</li>
</ul>
</li>
<li>Hauptliste: Punkt 5</li>
</ul>


Ich würde gerne alle <li> von Unterlisten durch <li2> ersetzen.

Nach der Entfernung aller Leerzeichen zwischen den HTML-Befehlen habe ich folgendes GREP ausprobiert:

(<li>.+?<ul>.*?)<li>(.+?</ul></li>) ersetze durch: $1<li2>$2

Das würde auch funktionieren, wenn man es mehrmals ausführt und es immer nur eine Unterliste gibt.

Da es aber auch mehrere Unterlisten geben kann, wird auch das <li> in der Hauptliste gefunden, da es auch vor diesem <li> vorher ein <li>.+?<ul> und nacher ein </ul></li> gibt.

Dass diese gefundenen <ul> und </ul> nicht von der gleichen Liste stammen, ist der Suche natürlich egal.

Weiß jemand, ob man das irgendwie umgehen könnte.

Gruß, Peter

---------------------------------------------------------------------
InDesign CC 2018 | Windows 10 Pro (64-bit)

(Dieser Beitrag wurde von Peter Sauseng am 25. Jan 2019, 10:56 geändert)

InDesign: XML-Import und CDATA-Abschnitte / GREP-Problem

Thomas Richard
Beiträge gesamt: 18079

25. Jan 2019, 11:44
Bewertung:

gelesen: 1315

Beitrag als Lesezeichen
Ich hab noch nicht kapiert wo du jetzt womit eigentlich suchst ...


aber wenn du alle <li> gefolgt von "Unterliste" gefolgt von optional "LeerzeichenZiffer" gegen <liZiffer> ersetzt, muss dann nicht auch das schliessende Tag gegen</liZiffer> ersetzt werden?


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/

InDesign: XML-Import und CDATA-Abschnitte / GREP-Problem

Peter Sauseng
Beiträge gesamt: 399

25. Jan 2019, 12:59
Bewertung:

gelesen: 1303

Beitrag als Lesezeichen
Hallo Thomas!

Ja, sicher, das schließende Tag müsste dann auch ersetzt werden.

Jetzt suche ich nach einem <li>, vor dem ein <li>, beliebiger Text, <ul> und optional beliebiger Text steht.
Nachher muss </ul></li> vorhanden sein, damit <li> ersetzt wird.


Gruß, Peter

---------------------------------------------------------------------
InDesign CC 2018 | Windows 10 Pro (64-bit)

InDesign: XML-Import und CDATA-Abschnitte / GREP-Problem

Peter Sauseng
Beiträge gesamt: 399

25. Jan 2019, 13:26
Bewertung:

gelesen: 1295

Beitrag als Lesezeichen
Ich werde es jetzt so machen, dass ich Marker für Beginn und Ende einer Unterliste erstelle (diese Bereiche sind ja eindeutig) und dann in InDesign per Skript nur die Bereiche zwischen diesen Markern suche und dort die Formatierung "LISTE 2" zuweise.

Gruß, Peter

---------------------------------------------------------------------
InDesign CC 2018 | Windows 10 Pro (64-bit)

InDesign: XML-Import und CDATA-Abschnitte / GREP-Problem

Thomas Richard
Beiträge gesamt: 18079

28. Jan 2019, 12:29
Bewertung:

gelesen: 1019

Beitrag als Lesezeichen
Dein Eingangsposting hab ich nicht wirklich kapiert, aber das letzte jetzt schon. Von daher: Guter Plan 20on20


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/