[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt XPath Ausdruck abzufragenden Wert in Variable schreiben (JS)

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

XPath Ausdruck abzufragenden Wert in Variable schreiben (JS)

JonesRidder
Beiträge gesamt: 85

13. Mai 2011, 12:55
Beitrag # 1 von 6
Bewertung:
(3913 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

XML Aussschnitt:
Code
<Artikel Sortierung="01"> 
<Bilder>
<Bild href="file:/BilderOrdner/BildXYZ.jpg" Sortierung="1"/>
<Bild href="file:/BilderOrdner/BildACG.jpg" Sortierung="2"/>
<Bild href="file:/BilderOrdner/BildFEG.jpg" Sortierung="3"/>
</Bilder>
</Artikel>
<Artikel Sortierung="02">
...
</Artikel>
<Artikel Sortierung="03">
...
</Artikel>
...


Ich möchte das Elemente Bild ansprechen je Artikel. Dazu ist es nötig, dass ich das Attribut "Sortierung" des Elements "Artikel" abfrage. Da das Attribut flexibel ist (einmal 1, einmal 2, einmal 3, einmal x ..), weiß ich nicht, wie ich es als Variable abfrage.

Code Ausschnitt:
Code
var _root = _dok.xmlElements[0]; 
for (var i = 0; i < _root.xmlElements.length; i++) {
var _artikel = _root.xmlElements[i];
//so würde es funktionieren (statisch):
for (var _enterBild = 0; _enterBild < _artikel.evaluateXPathExpression("//Artikel[@Seitenumfang='01']/Bilder/Bild").length; _enterBild++) { ...}
//so geht es nicht - wenn ich also anstatt die Zahl aus Sortieren als Varialbe verwenden möchte
var varSortieren = i+1;
for (var _enterBild = 0; _enterBild < _artikel.evaluateXPathExpression("//Artikel[@Rubrik=varSortieren]/Bilder/Bild").length; _enterBild++) {...}
}

Wie kann ich die Zahl, die unter <Artikel Sortierung=""> drinsteht, variabel abfragen/in die for Schleife einbauen?

Hoffe ich drücke mich verständlich aus, wenn nicht bitte fragen.

Danke!
Gruß
J.R.

(Dieser Beitrag wurde von JonesRidder am 13. Mai 2011, 12:57 geändert)
X

XPath Ausdruck abzufragenden Wert in Variable schreiben (JS)

Dirk Becker
Beiträge gesamt: 191

13. Mai 2011, 23:01
Beitrag # 2 von 6
Beitrag ID: #471439
Bewertung:
(3879 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der ganze xpath Ausdruck ist ein String.
String Konstante plus variable plus String Konstante gibt wieder einen String. Also nach dem Prinzip:

var wert = 7;
alert("abc"+wert+"def");

Natürlich nicht die einfachen Quotes um den eingebetteten Wert herum vergessen!

Ein kleiner Hinweis: evaluateXPathExpression ist zwar etwas schneller, aber InDesign verliert dabei zumindest in CS4 Speicher. Das äußert sich dann durch Abstürze in eine "AdobeBIB" DLL. Für Dauerläufer auf InDesign Server sollte man besser XMLRules verwenden.

Ausserdem sollte man das Ergebnis-Array der XPath Auswertung (pro Rubrik) zwischenspeichern, statt es in jedem Schleifendurchgang neu auszuwerten.

Dirk


als Antwort auf: [#471404]

XPath Ausdruck abzufragenden Wert in Variable schreiben (JS)

JonesRidder
Beiträge gesamt: 85

16. Mai 2011, 08:19
Beitrag # 3 von 6
Beitrag ID: #471489
Bewertung:
(3818 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Antwort aber ich schiene mich missverständlich ausgedrückt zu haben ...
es geht mit nicht primär um das:
Code
var varSortieren = i+1; 

sondern um das:
Code
for (var _enterBild = 0; _enterBild < _artikel.evaluateXPathExpression("//Artikel[@Rubrik=varSortieren]/Bilder/Bild").length; _enterBild++) {...} 

genauer: wie ich die Variable varSortieren richtig anwende in diesem XPathAusdruck (muss ich sie in Hochkomma setzten -GehtNicht- ohne Hochkomma direkt nach = -GehtAuchNicht ...), um stets die Anzahl der des XML Elements Bild im jeweiligen Artikel Element erfahren kann.

Danke für die Hilfe.

Gruß
J.R.

PS: Danke auch für den Hinweis mit der DLL.


als Antwort auf: [#471439]
(Dieser Beitrag wurde von Martin Fischer am 16. Mai 2011, 08:46 geändert)

XPath Ausdruck abzufragenden Wert in Variable schreiben (JS)

Martin Fischer
  
Beiträge gesamt: 12732

16. Mai 2011, 08:37
Beitrag # 4 von 6
Beitrag ID: #471490
Bewertung:
(3811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der Wert der Variable, eine Zahl, soll in den String integriert werden.
Geht es so?
Code
var _xpath_exp = _artikel.evaluateXPathExpression("//Artikel[@Rubrik=" + varSortieren + "]/Bilder/Bild"); 
for (var _enterBild = 0; _enterBild < _xpath_exp.length; _enterBild++) {...}


Ich vermute, dass Dirk mit alert("abc"+wert+"def"); ebendies zu vermitteln suchte.


als Antwort auf: [#471489]
(Dieser Beitrag wurde von Martin Fischer am 16. Mai 2011, 08:47 geändert)

XPath Ausdruck abzufragenden Wert in Variable schreiben (JS)

Dirk Becker
Beiträge gesamt: 191

16. Mai 2011, 09:09
Beitrag # 5 von 6
Beitrag ID: #471492
Bewertung:
(3789 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry, ich arbeite zu viel mit Programmierern und hatte zuviel Abstraktionsvermögen vorausgesetzt. Alert hatte für mich einfach nur den Vorteil, dass es beim Lesen auf der Website nicht aus der Zeile herausscrollt ...

Wie in meinem Nachsatz geschrieben, darf man nicht auf die Quotes verzichten.

Code
var bilder = _artikel.evaluateXPathExpression("//Artikel[@Rubrik='" + varSortieren + "']/Bilder/Bild"); 



als Antwort auf: [#471490]

XPath Ausdruck abzufragenden Wert in Variable schreiben (JS)

JonesRidder
Beiträge gesamt: 85

16. Mai 2011, 14:11
Beitrag # 6 von 6
Beitrag ID: #471519
Bewertung:
(3740 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für eure Antworten!
Scheint zu funktionieren.
Gruß
J.R.


als Antwort auf: [#471492]
X