Ich steh gerade mal wieder auf dem Schlauch und kann nirgendswo eine Dokumentation für XSLT finden oder ein Beispiel hierfür. Auch hier hab ich nichts gefunden was dem irgendwie Nahe kommt, dabei sollte es doch ganz einfach sein:
Folgende XML-Datei:
soll via einer XSLT beim Import in Indesign in folgende Form gebracht werden:
ItemPropertyCollection ist das sich immer wiederholende Element
Jetzt hätte ich gedacht das die XSLT so aussehen muss:
Funktioniert nur leider nicht. "Die Daten konnten icht in die Ausgabe geschrieben werden." heisst es nur. Womit kann man sowas denn debuggen? Oder wo ist der Fehler?
du hast da ein Problem mit dem Namensraum/Präfix. Du definierst in deiner XML-DAtei einen Standard-Namensraum. XPath-Ausdrücke benötigen dann aber (zumindest in XSLT 1.0) ein Präfix für die Auswertung.
Versuch es mal so: Du ordnest dem Namensraum ein eigenes Präfix zu, also zu Beginn der Transformation z.B.: xmlns:my="com.cisag.app.general.obj.ItemPropertyCollection"
Dann stellst du allen Elementen in den XPath-Ausdrücken ein my: voran:
Mit »Kernow« etwa kannst du die Transformation testen oder mit »XPath Checker« als Addon für Firefox den XPath-Ausdruck überprüfen.
Hallo Roland! Super! Das funktioniert schonmal! Vielen Dank! Nur klappt es nur wenn in der XML nur ein Datensazu drin ist. Wenn da viele drin sind sagt es jetzt
Obwohl die XML genausoaussieht wie die andere. nur eben mit mehr ItemPropertyCollection Enträgen. Was mach ich da jetzt falsch? Dafür hab ich doch extra das for-each drin ... Die XSL sieht jetzt so aus:
Nachtrag: Als zu platzierendes Element wird ja jetzt immer "textcontainer" angezeigt. Wie kann ich dem sagen das er bitte da dann hinschreibt z.B. das Ergebnis von <xsl:copy-of select="my:Item/my:description"/>, damit man auch weiss was es ist?
Ich hab das jetzt auch mal mit Kernow getestet, da läuft das gut durch. Auch wenn mich stört das die Namespaceeinträge bei jedem Elemt wieder reingeschrieben werden. Wenn man diese Datei dann in Indesign laden will kommt dasnn der Fehler das er sich da stört wo der zweite textcontainer anfängt ... Irgendwelche Ideen?
Ja genau. Das ist ja jetzt völlig "werte-los" also bei 100 Elementen steht halt in der Strukturübersicht hundertmal textcontainer und ich weiss nicht um welchen "Artikel" es sich handelt. Dafür gibt's ja diese schlaue Werte-Vorschau, und genau die hätte ich an der Stelle gerne damit ich das richtige auswählen kann.
Vielen Dank! Da kommt jetzt dasselbe raus wie bei dem was ich da zusammengeschustert habe. Was ich allerdings nicht verstehe ist warum mir auch bei bestimmten importoptionen neben dem Wert von z.B. <xsl:apply-templates select="ipc:Item"/> er noch hinschreibt "Item". Ist das ein normales Verhalten?
Und eine letzte Frage hierzu: Kann man mit dem XSL auch Änderungen vornehmen lassen im Inhalt? Beispiel: In einem Feld "XY" steht immer der Wert "10" oder "20" und in der InDesign-Datei soll bei "10" aber "grün" stehen und bei "20" dann "blau". Und das ganze für alle möglichen anderen Felder. Geht das?