Auf vorheriges Element zugreifen
Marcus
- xsl
Hallo
Ich habe eine Frage bzgl. XSL. Ich möchte ein dynamisches Liniendiagramm mittels einem Stylesheet in SVG ausgeben. Um dies zu realisieren benötige ich eine Schleife, die jeweils den vorherigen Wert eines Elementes aus dem XML-Dokument in eine Variable (Anzahl_alt) schreibt. Momentan habe ich dazu eine "for-each" Schleife und habe mich an "preceding:: ..." versucht. Dies scheint aber nicht zu funktionieren, da mir mit preceding immer derselbe Wert ausgegeben wird.
Hat evtl. jemand eine Idee wie man das lösen kann. Zum besseren Verständnis habe ich hier noch mal einen Teil meines Codes angehängt:
<xsl:for-each select="Pie/ExposureTime">
<xsl:sort select="Anzahl" data-type="number" order="descending"/>
<xsl:variable name="i" select="position() - 1"/>
<xsl:variable name="Anzahl">
<xsl:value-of select="Anzahl"/>
</xsl:variable>
<xsl:variable name="Anzahl_alt">
<xsl:value-of select="number(preceding::Anzahl/text())"/>
</xsl:variable>
Tach Marcus,
Ich habe eine Frage bzgl. XSL. Ich möchte ein dynamisches Liniendiagramm mittels einem Stylesheet in SVG ausgeben. Um dies zu realisieren benötige ich eine Schleife, die jeweils den vorherigen Wert eines Elementes aus dem XML-Dokument in eine Variable (Anzahl_alt) schreibt.
Zeige mal einen Ausschnitt aus dem XML-Dokument, welcher den "vorherigen Wert" verdeutlicht.
Man liest sich,
svg4you
Hallo svg4you
Zeige mal einen Ausschnitt aus dem XML-Dokument, welcher den "vorherigen Wert" verdeutlicht.
Hier hab ich einen Auschnitt aus dem XML-Dokument - es soll also jeweils das vorherige "Anzahl"-Element zu der aktuellen Position in der for-each Schleife übergeben werden:
<ExposureTime>
<Wert>160sec</Wert>
<Anzahl>12</Anzahl>
</ExposureTime>
<ExposureTime>
<Wert>18sec</Wert>
<Anzahl>2</Anzahl>
</ExposureTime>
<ExposureTime>
<Wert>2sec</Wert>
<Anzahl>1</Anzahl>
</ExposureTime>
<ExposureTime>
<Wert>138sec</Wert>
<Anzahl>1</Anzahl>
</ExposureTime>
<ExposureTime>
<Wert>1320sec</Wert>
<Anzahl>1</Anzahl>
</ExposureTime>
<ExposureTime>
<Wert>1280sec</Wert>
<Anzahl>1</Anzahl>
</ExposureTime>
Grüße , Marcus
Tach Marcus,
Hier hab ich einen Auschnitt aus dem XML-Dokument - es soll also jeweils das vorherige "Anzahl"-Element zu der aktuellen Position in der for-each Schleife übergeben werden:
Ein Ansatz:
<xsl:for-each select="ExposureTime">
<xsl:value-of select="position()"/>:<xsl:value-of select="preceding-sibling::ExposureTime[count(*)-1]/Anzahl/text()"/>
<br />
</xsl:for-each>
Ergebnis [bei position()=1 gibt es keinen vorherigen Geschwisterknoten]:
1:
2:12
3:2
4:1
5:1
6:1
Man liest sich,
svg4you
Hallo svg4you,
das war genau das was ich suchte. Der erste Knoten fällt bei meiner Anwendung sowieso raus. Also besten Dank noch mal.
Gruß , Marcus