MudGuard: Problem beim auswählen der Werte aus der XML

Beitrag lesen

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 &lt;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.