hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » XML mittels XSLT importieren

 

« « 1 2 » »  


bernd.richter S
Beiträge: 44

11. Mär 2010, 13:07

Beitrag #16 von 22
Beitrag ID: #436088

Bewertung:

(732 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

XML mittels XSLT importieren


Leider habe ich nun schon die nächsten Probleme (immerhin habe ich es schon geschafft eine if-Abfrage zu konstruieren):

Der obige Pfad setzt sich wie folgt zusammen:
//file:/60(93)A63027A01BL_k.eps
Der Wert 60 muss wiederum aus der XML gelesen werden. Der Pfad setzt sich also aus zwei unterschiedlichen Werten zusammen.
Den Wert kann ich auslesen, aber leider nicht im Pfad verschachteln. Außerdem soll aus 60,000 noch 60 werden.

Das andere Problem ist ich kann einen Abgefragten Wert nicht nochmal auslesen und in ein anderes Tag schreiben. Im Beispiel soll der Bild-Pfad generiert werden, aber auch der Wert in ein anderes Tag geschrieben werden.

als Antwort auf: [#435982] Top

bernd.richter S
Beiträge: 44

11. Mär 2010, 16:20

Beitrag #17 von 22
Beitrag ID: #436119

Bewertung:

(709 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

XML mittels XSLT importieren


Habe die Lösung für das Umwandeln von 60,000 in 60 schon gefunden!
Dies funktioniert mittels substring.

Code:

...
<xsl:value-of select="substring(./ss:Data, 1, 2)" />
...

Dieser Code extrahiert ab dem 1. Zeichen des Wertes bis zum 2. Zeichen.

Wie kann ich diesen Wert jetzt noch an den Bildpfad übergeben?
Ich habe es schon mit xsl:variable und xsl:param probiert, bin aber zu keinem Ergebnis gekommen...

als Antwort auf: [#436088] Top

Neil77 p
Beiträge: 263

11. Mär 2010, 17:52

Beitrag #18 von 22
Beitrag ID: #436143

Bewertung:

(691 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

XML mittels XSLT importieren


Hallo, Bernd,

das kommt darauf an ... wo steht denn die Zahl, also in Relation zu deinem Cell-Element, in dem du dich wahrscheinlich befindest? Du musst dann eigentlich nur den entsprechenden relativen oder auch absoluten Pfad in deinen select-Ausdruck eingeben.

Grüße, Martin
--
Martin Heise
http://www.martinheise.de

als Antwort auf: [#436119] Top

bernd.richter S
Beiträge: 44

11. Mär 2010, 18:42

Beitrag #19 von 22
Beitrag ID: #436150

Bewertung:

(680 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

XML mittels XSLT importieren


Hi Martin,

Das Problem ist, dieser Wert steht in der Zelle DATA3. Das Bild-Tag in welchem ich den Pfad angebe, generiere ich aber aus DATA4. Ich dachte ich übergebe den Wert per Variable, das funktioniert aber irgendwie nicht.

Was denkst du?

Gruß,

Bernd

als Antwort auf: [#436143] Top

Neil77 p
Beiträge: 263

11. Mär 2010, 20:42

Beitrag #20 von 22
Beitrag ID: #436167

Bewertung:

(660 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

XML mittels XSLT importieren


Hallo, Bernd

du kommst per XPath eigentlich an alle Knoten ran, wenn die Beziehung klar ist. Also: z.B.: Das Element steht dem aktuellen direkt zuvor, oder aber irgendwo in der Datei aber mit einem bestimmten Inhalt, oder ...

Wenn es sich bei Zelle, die du ansprechen willst, immer um ein vorhergehendes Geschwister mit dem "Namen" DATA3 handelt, kann dir z.B. das weiterhelfen:
Code
<xsl:value-of select="preceding-sibling::ss:Cell[ss:NamedCell[@ss:Name='DATA3']]" /> 


Ob das aber der Königsweg ist, hängt davon ab, wie deine Eingangsdaten allgemein strukturiert sind, und was du sonst noch erreichen musst. Wenn du da weiter in die Details vordringen willst, solltest du dir unbedingt mal eine der vielen XSLT-Referenzen oder -tutorials, die es im Netz gibt, näher anschauen. Z.B.
http://www.zvon.org/...ce/Output/index.html
http://www.w3schools.com/...sl_w3celementref.asp
Wenn du darüber einen Überblick hast, weißt du schonmal, was überhaupt machbar ist, und bekommst ein Gefühl dafür, in welcher Richtung du suchen musst. Das ist alles erstmal recht komplex, aber lohnt sich!

Grüße, Martin
--
Martin Heise
http://www.martinheise.de

als Antwort auf: [#436150] Top

bernd.richter S
Beiträge: 44

12. Mär 2010, 09:36

Beitrag #21 von 22
Beitrag ID: #436206

Bewertung:

(634 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

XML mittels XSLT importieren


Guten Morgen Martin,

ich weiß es gibt viele Tutorials und Referenzen, und ich schaue auch oft bei denen nach. Leider habe ich noch keine Lösung für mein spezielles Problem gefunden.

Code
<xsl:template match="ss:Worksheet/ss:Table/ss:Row/ss:Cell[ss:NamedCell[@ss:Name='DATA4']]">  
<xsl:element name="Pfad">
<xsl:attribute name="href">file://--DATA66--(93)<xsl:value-of select="./ss:Data" />_k.eps</xsl:attribute>
</xsl:element>
</xsl:template>


Mein Element <Pfad> generiere ich ja im Template DATA4 und übergebe den Wert mit <xsl:value-of select="./ss:Data" />. Da ich ja in DATA4 bin, kann ich ja nicht nochmal mit <xsl:value-of select="./ss:Data" /> den Text aus DATA3 übergeben.

Hier habe ich es mal mit Variablen probiert:

Code
<xsl:stylesheet version="2.0" xmlns:o="urn:schemas-microsoft-com:office:office"   
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:strip-space elements="*" />

<xsl:template match="/" >
<xsl:element name="Root">
<xsl:apply-templates />
</xsl:element>
</xsl:template>

<xsl:template match="ss:*">
<xsl:apply-templates />
</xsl:template>

<xsl:template match="ss:Cell">
</xsl:template>


<xsl:template match="ss:Worksheet/ss:Table/ss:Row/ss:Cell[ss:NamedCell[@ss:Name='DATA66']]">
<xsl:variable name="pfad"
select="substring(./ss:Data,1,2)"/>
</xsl:template>
<xsl:template match="ss:Worksheet/ss:Table/ss:Row/ss:Cell[ss:NamedCell[@ss:Name='DATA4']]">
<xsl:variable name="wert"
select="substring(./ss:Data,1,2)"/>
</xsl:template>
<Pfad><xsl:value-of select="$pfad"/></Pfad>
<Bild href="file:///{$pfad}(34){$wert}_k.eps"/>
<Wert><xsl:value-of select="$wert"/></Wert>



</xsl:stylesheet>


Dies funktioniert leider nicht da die beiden Variablen aus verschiedenen Knoten ausgelesen werden. Kann ich die Variablen global definieren?
Ich habe übrigens diesmal das Feld DATA66 verwendet, da dies bei einer späteren Anwendung der Fall sein wird.

als Antwort auf: [#436167] Top

bernd.richter S
Beiträge: 44

12. Mär 2010, 14:47

Beitrag #22 von 22
Beitrag ID: #436285

Bewertung:

(611 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

XML mittels XSLT importieren


So, habs endlich geschafft! Hier die Lösung:

Code
<xsl:stylesheet 
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
exclude-result-prefixes="ss">

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*" />

<xsl:template match="/">
<Root>
<xsl:variable name="pfad"
select="substring-before(//ss:Cell[ss:NamedCell/@ss:Name = 'DATA3']/ss:Data, ',')"/>
<xsl:variable name="wert"
select="//ss:Cell[ss:NamedCell/@ss:Name = 'DATA4']/ss:Data"/>
<Pfad><xsl:value-of select="$pfad"/></Pfad>
<Bild href="file:///{$pfad}(34){$wert}_k.eps"/>
<Wert><xsl:value-of select="$wert"/></Wert>
</Root>
</xsl:template>

</xsl:stylesheet>


als Antwort auf: [#436206] Top
« « 1 2 » »  


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » XML mittels XSLT importieren


^