[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt XML-Tags vollständig löschen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

XML-Tags vollständig löschen

Uli75
Beiträge gesamt: 35

17. Jun 2019, 17:49
Beitrag # 1 von 12
Bewertung:
(8270 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

wir müssten InDesign-Dokumente mit xml-Tags versehen und zusätzlich mit Attributen ergänzen. Wir bekommen von einem Lieferanten die besagten IDs zugeschickt die nicht mit den xml-Tags versehen sind. Wenn ich jedoch mittels rechtsklick auf die Rahmen gehe und in "Tag für Rahmen" schaue, sind leider doch noch "Präferenzen" enthalten.

Nun ist es so, dass ich mittels "Tags automatisch erstellen" das Tagging vornehme und die Tags per Script umbenennen möchte. Leider ist der neu zu vergebene Namen (PFBlock) identisch welche noch im Hintergrund gespeichert sind.

folgendes Script (mit Quellhinweis) werde ich:
Code
//XMLTagUmbenennen.jsx 
//https://forums.adobe.com/thread/714182

#target InDesign

var myDoc = app.activeDocument;

RenameXMLTag("Textabschnitt", "PFBlock");


function RenameXMLTag(Old, New)
{
if(myDoc.xmlTags.itemByName(Old).isValid)
{
myDoc.xmlTags.itemByName(Old).name = New;
}

}


Das Skript endet mit dem Hinweis:
[b]Fehlernummer:49089
Fehlerzeichenfolge: Ein Tag mit diesem Namen ist berreits vorhanden. Wählen Sie einen anderen Namen aus.

Folgendes Skript entfernt zwar die Tags aus der Struktur, jedoch auch nicht in den Präferenzen:
Code
//XmlTagRemove.jsx 
//Xml Tags entfernen
//https://www.hilfdirselbst.ch/foren/XML-Tags_im_Buch_entfernen_f%FCr_Indexerstellung_nach_ZF_P500691.html#500691

app.activeDocument.xmlElements.firstItem().xmlElements.everyItem().untag();


Desweiteren möchte ich im Zuge der Umbenennung ein oder mehrere Attribute zum Tag setzen. Bin (wie manche vielleicht wissen) kein Scripter und ich finde keine Lösung!

Um Rückmeldung wäre ich (wie immer) äußerst Dankbar.

Gruß
Uli

P.s. gibt es im speziellen Schulungen oder online-Tutorials für das JavaScripting in InDesign?

(Dieser Beitrag wurde von Uli75 am 17. Jun 2019, 17:50 geändert)
X

XML-Tags vollständig löschen

Martin Fischer
  
Beiträge gesamt: 12263

17. Jun 2019, 18:30
Beitrag # 2 von 12
Beitrag ID: #570735
Bewertung:
(8260 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uli,

ich bin mir nicht ganz sicher, ob ich Dich richtig verstanden habe.

Aber hilft das?
(Bitte erst an einem Beispiel-Dokument testen!)
Code
app.activeDocument.xmlElements.firstItem().xmlElements.everyItem().untag();  
var root_tag = app.activeDocument.xmlElements.firstItem().markupTag;
for (var i = app.activeDocument.xmlTags.length-1; i >= 0; i--)
{
if (app.activeDocument.xmlTags.item(i) != root_tag)
app.activeDocument.xmlTags.item(i).remove(root_tag);
}


Das Schnipsel entfernt zunächst alle zugewiesenen Tags vom Text.
Danach löscht es alle Tags bis auf das Root-Tag.

Viele Grüße
Martin




als Antwort auf: [#570734]
(Dieser Beitrag wurde von Martin Fischer am 17. Jun 2019, 18:38 geändert)

XML-Tags vollständig löschen

Uli75
Beiträge gesamt: 35

18. Jun 2019, 08:47
Beitrag # 3 von 12
Beitrag ID: #570743
Bewertung:
(8211 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

das hat soweit prächtig funktioniert. Herzlichen Dank dafür!!!

Was ist wenn in dem gelieferten ID noch ein DTD hinterlegt ist. Könnte man das Script noch erweitern und dieses ebenso ersatzlos löschen?

Jetzt steh ich noch etwas auf dem Schlauch, was das hinzufügen von Attributen und Werten im ersten Skript (XMLTagUmbenennen.jsx) anbelangt. Wie weiß ich da was zu?

Gruß
Uli


als Antwort auf: [#570735]
(Dieser Beitrag wurde von Uli75 am 18. Jun 2019, 08:54 geändert)

XML-Tags vollständig löschen

Uli75
Beiträge gesamt: 35

18. Jun 2019, 12:57
Beitrag # 4 von 12
Beitrag ID: #570752
Bewertung:
(8171 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo nochmals,

habe das vorhin beschriebene Problem, was die DTDs angeht, gelöst. Wenn ich das DTD manuell aus der Struktur lösche, und dann das Bereinigungs-Script anwende, sind auch die Daten im Hintergrund gelöscht.

Bleibt nur noch eine Frage offen, wie ich im Zuge der Umbenennung noch Attribute hinzufügen kann.

Muchas gracias
Uli


als Antwort auf: [#570743]

XML-Tags vollständig löschen

Uli75
Beiträge gesamt: 35

18. Jun 2019, 15:19
Beitrag # 5 von 12
Beitrag ID: #570754
Bewertung:
(8147 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo nochmals,

vielleicht bin ich generell ja auf dem Holzweg mit dem Umbennen.

Es gibt ja bestimmt die Möglichkeit, alle Textrahmen mit einem Tag zu versehen und gleichzeitig ein Attribut mit entsprechendem Wert zu generieren.

Habe schon etliche Scripts ausgetestet, finde jedoch nur welche, mit denen entweder:
- der Text ausgewählt werden muss
- der Textrahmen nur ein Tag erhält jedoch ohne Attribute

Vielleicht findet sich jemand, der sowas schon mal gescriptet hat oder mit den nötigen Lösungsweg aufzeigen kann.

Gruß
Uli


als Antwort auf: [#570752]

XML-Tags vollständig löschen

Martin Fischer
  
Beiträge gesamt: 12263

18. Jun 2019, 16:21
Beitrag # 6 von 12
Beitrag ID: #570755
Bewertung:
(8133 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uli,

wirf mal einen Blick ins DOM: XMLAttributes.add()

Ein xmlAttribut fügst Du einem xmlElement hinzu:

Code
mein_xmlElement.xmlAttributes.add('mein_Attribut', 'mein_Inhalt'); 


Du brauchst also ein xmlElement, um ihm ein Attribut hinzuzufügen.

Angenommen, Du hast etwas ausgewählt, was getaggt ist, dann ginge das so:

Code
if (app.selection[0].associatedXMLElement != null) 
app.selection[0].associatedXMLElement.xmlAttributes.add('mein_Attribut', 'mein_Inhalt');


Viele Grüße
Martin




als Antwort auf: [#570754]
(Dieser Beitrag wurde von Martin Fischer am 18. Jun 2019, 16:22 geändert)

XML-Tags vollständig löschen

Uli75
Beiträge gesamt: 35

18. Jun 2019, 16:57
Beitrag # 7 von 12
Beitrag ID: #570756
Bewertung:
(8111 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Martin,

das funktioniert ja tadellos! Merci dafür.

Aus der DOM werde ich nicht wirklich schlau, da kann mir wohl auch keiner helfen :-)

Angenommen:
Es müssen alle Textrahmen mit dem Tag A versehen und mit dem Attribut X werden. Wie stell ich das an?

Gruß
Uli

P.s. ich möchte jedoch keinen über die Maßen die Zeit klauen !!!


als Antwort auf: [#570755]

XML-Tags vollständig löschen

Martin Fischer
  
Beiträge gesamt: 12263

18. Jun 2019, 17:35
Beitrag # 8 von 12
Beitrag ID: #570757
Bewertung: |||
(8079 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das folgende Schnipsel sollte zum Einen alle freistehenden Textrahmen (nicht verankert, nicht gruppiert, nicht in Tabellen ...) taggen (falls nicht bereits getaggt) und zum Anderen dem (ggf. neu) zugewiesenen xmlElement das xmlAttribut 'A' mit dem Wert '...' zuweisen.

Code
var doc = app.activeDocument;  
var xml_tag = (doc.xmlTags.itemByName('A').isValid) ? doc.xmlTags.itemByName('A') : doc.xmlTags.add({name:'A'});
var xml_element = null;

for (var i = doc.textFrames.length-1; i >= 0; i--)
{
if (doc.textFrames.item(i).associatedXMLElement != null)
{
// Textrahmen bereits getaggt
xml_element = doc.textFrames.item(i).associatedXMLElement;
}
else
{
// Textrahmen noch nicht getaggt
xml_element = doc.xmlElements.firstItem().xmlElements.add({markupTag: xml_tag});
doc.textFrames.item(i).markup(xml_element);
}
try
{
//Versuch, das angegebene xmlAttribut zuzuweisen
if (!doc.textFrames.item(i).associatedXMLElement.xmlAttributes.itemByName('X').isValid)
doc.textFrames.item(i).associatedXMLElement.xmlAttributes.add('X', '...');
}
catch(e)
{
// Zuweisung des xmlAttributs misslungen
$.writeln( e.message );
}
}


Viele Grüße
Martin




als Antwort auf: [#570756]
(Dieser Beitrag wurde von Martin Fischer am 18. Jun 2019, 17:54 geändert)

XML-Tags vollständig löschen

Uli75
Beiträge gesamt: 35

19. Jun 2019, 08:40
Beitrag # 9 von 12
Beitrag ID: #570760
Bewertung:
(7744 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Martin,
TOP!!!!

Vielen Herzlichen Dank! Das ist genau das was ich brauche!

Jetzt nehm ich mir das Buch von Gregor Fellenz "InDesign automatisieren" und schau mir die Logik deines Scripts an.

Top, top, top… bin begeistert

Gruß
Uli


als Antwort auf: [#570757]

XML-Tags vollständig löschen

Martin Fischer
  
Beiträge gesamt: 12263

19. Jun 2019, 09:28
Beitrag # 10 von 12
Beitrag ID: #570762
Bewertung:
(7697 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Uli,

vielen Dank für Deine Rückmeldung.

Wenn die obigen Beispiele dazu anspornen, Dich selbst in die Materie zu vertiefen – wozu das Buch von Gregor eine gute Grundlage bietet – dann hat sich diese Diskussion wirklich gelohnt.

Weitere interessante Quellen findest Du bei Peter Kahrel, dessen Skripte ich Dir besonders zum Studium und zur Orientierung empfehle: InDesign: JavaScript and GREP links and other useful resources.


Es freut mich, Dich von diesem »Virus« angesteckt zu sehen. Smile

Viele Grüße
Martin




als Antwort auf: [#570760]

XML-Tags vollständig löschen

Uli75
Beiträge gesamt: 35

24. Jun 2019, 10:34
Beitrag # 11 von 12
Beitrag ID: #570834
Bewertung:
(3422 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin nochmals,

bin wohl mit dem Virus infiziert, jedoch ist die Krankheit noch nicht ausgebrochen :-)

Jetzt, nach Rücksprache mit dem Kollegen, taucht die Frage auf, ob man nicht die vertaggung nur auf der entsperrten Ebene (immer die oberste) vornehmen kann und alle Textrahmen auf gesperrten Ebenen vernachlässigt.

Ich weiß zwar, dass ich die Ebene mit firstItem ansprechen kann, aber nicht die Elemente auf dieser.

Kann mir geholfen werden?


als Antwort auf: [#570762]

XML-Tags vollständig löschen

Uli75
Beiträge gesamt: 35

25. Jun 2019, 09:20
Beitrag # 12 von 12
Beitrag ID: #570845
Bewertung:
(3323 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten morgen zusammen!

Glaube bin auf der Zielgeraden!? Zumindest funktioniert es wie nachfolgend:

Code
//TagAttributZuTextrahmen.jsx 
//https://www.hilfdirselbst.ch/gforum/gforum.cgi?post=570757#570757

var doc = app.activeDocument;
var xml_tag = (doc.xmlTags.itemByName('PFBlock').isValid) ? doc.xmlTags.itemByName('PFBlock') : doc.xmlTags.add({name:'PFBlock'});
var xml_element = null;


for (var i = doc.layers.firstItem().textFrames.length-1; i >= 0; i--)
{

//wenn oberste Ebene gesperrt -> Stop
if (doc.layers.firstItem().locked == true)
{
alert("Die oberste Ebene ist gesperrt!");
exit();
} else {

if (doc.layers.firstItem().textFrames.item(i).associatedXMLElement != null)
{
// Textrahmen bereits getaggt
xml_element = doc.textFrames.item(i).associatedXMLElement;
}
else
{
// Textrahmen noch nicht getaggt
xml_element = doc.xmlElements.firstItem().xmlElements.add({markupTag: xml_tag});
doc.layers.firstItem().textFrames.item(i).markup(xml_element);
}
try
{
//Versuch, das angegebene xmlAttribut zuzuweisen
if (!doc.layers.firstItem().textFrames.item(i).associatedXMLElement.xmlAttributes.itemByName('settings').isValid)
doc.layers.firstItem().textFrames.item(i).associatedXMLElement.xmlAttributes.add('settings', // Anfuehrungen müssen \" auskommentiert und Zeilenschalter mittels \n erstellt werden
'{\n\"block-actions\":\"\",\n\"text-format\":\"\"\n}');
}
catch(e)
{
// Zuweisung des xmlAttributs misslungen
$.writeln( e.message );
}
}
}


Gruß
Uli


als Antwort auf: [#570834]
X

Aktuell

PDF / Print
PDF Days Europe-300x300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
07.02.2020 - 11.09.2020

Digicomp Academy AG, 8005 Zürich
Freitag, 07. Feb. 2020, 13.00 Uhr - Freitag, 11. Sept. 2020, 12.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte. Mit dem Abschluss «Publisher Professional – Profil «Multimedia» verliehen durch die Digicomp Academy AG, bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/publishing-lehrgaenge/lehrgang-publisher-professional-profil-multimedia

Veranstaltungen
22.02.2020 - 04.07.2020

Lehrgang zielgerichtet auf die Zertifizierung zum Publisher Basic

Schulungsraum PubliCollege, Kronenhalde 9d, 3400 Burgdorf
Samstag, 22. Feb. 2020, 13.14 Uhr - Samstag, 04. Juli 2020, 13.15 Uhr

Projektseminar/Lehrgang

Ziele In der Medienproduktion unter Einbezug der aktuellen Publishing-Programme mitarbeiten. Voraussetzungen Sie möchten gestalterisch tätig sein und eigene grafische Ideen kompetent entwickeln sowie umsetzen; Medienproduktionen professionell planen und ausführen. Kompetenzen Nach Abschluss dieses Lehrgangs können Sie Printpublikationen aller Art von der Gestaltung über die Umsetzung bis zu druckfertige PDFs erstellen. Sie sind fähig, CI/CD-Vorgaben umzusetzen. Sie lernen die Grundlagen der grafischen Gestaltung kennen und setzen diese mit Adobe Photoshop, InDesign und Illustrator effizient um.

15 Halbtage, jeweils am Samstag von 08.30 bis 14 Uhr im Kursraum des PubliCollege, 3400 Burgdorf


Daten
Samstag, 22.2., 29.2., 14.3., 21.3., 28.3., 4.4., 25.4., 2.5., 9.5., 16.5., 6.6., 13.6., 20.6., 27.6., 4.7. 2020
Reservedatum am 23.5. 2020

Ja

Organisator: PubliCollege GmbH, 3400 Burgdorf

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

https://www.publicollege.ch/kursangebote/20-publisher-basic

Neuste Foreneinträge


Auswahl ausblenden

PDF: QR-Code mit Bild ersetzen

Unterstreichung NICHT hochstellen?

Unterschiedliche Abstände trotz identischer Absatzformate

Pfad veschieben

Anfängerfrage: Tabellenkopfzeile

Umstellung von Mac auf Windows verhindern

Acrobat Pro Textfarbe Javascript ändert sich erst nach Klick ins Formularfeld

Oehlbach DVI-D Dual-Link Kabel - 7,5 + 2 x 10 Meter

"Temporäre Aktivierung abgelaufen"
medienjobs