Hi,
<xsl:template match="Intervall" name="Temp1">
<xsl:call-template name="Temp2">
<xsl:with-param name="counter">1</xsl:with-param>
</xsl:call-template>
</xsl:template>
Du rufst Temp2 also mit einem Parameter auf.
<xsl:template name="Temp2">
<xsl:param name="counter"></xsl:param>
<xsl:param name="y1">
Temp2 hat aber mehrere Parameter.
Oder hätte das eigentlich xsl:variable sein sollen?
<xsl:for-each select="value">
<xsl:if test="position()=$counter">
<xsl:value-of select="."/></xsl:if>
</xsl:for-each>
<xsl:value-of select="value[position()=$counter]/>
sollte dasselbe bewirken wie Deine Schleife.
</xsl:param>
<xsl:param name="y2">
<xsl:for-each select="value">
<xsl:if test="position()=$counter+1">
<xsl:value-of select="."/></xsl:if>
</xsl:for-each>
</xsl:param>
<text x1="{$y1}" x2="{$y2}"/>
sollte sich sogar auf
<text x1="{value[position()=$counter]}" x2="{value[position()=$counter+1]}"/>
reduzieren lassen.
<xsl:if test="$counter <3">
<xsl:call-template name="Temp2">
<xsl:with-param name="counter" select="$counter+1"></xsl:with-param>
</xsl:call-template>
</xsl:if>
Daß hier beim 3. Aufruf jeweils "" für x2 rauskommt, liegt daran, daß auf ein value[position()=4] zugegriffen werden soll - in jedem Intervall gibt es aber nur 3 value-Elemente.
Du solltest das nicht in jedem Intervall für alle Kinder namens value machen, sondern in data eine Schleife über alle Nachfahren namens value machen.
<text x1="203" x2=""/><<<<<<<<<<<<< Das könnt ihr vernachlässigen, weil . hier ja ende ist.
Das könnte man noch mit position() != last() abfangen.
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.