Holge r: Variableninhalt soll neuer Variablenname werden

Beitrag lesen

Hallo,

Also mit einer for-each duerfte es auch etwas schwierig sein, da sich das for-each auf vorhandene XML Knoten bezieht. Anbei ein Beispiel wie du es loesen koenntest mit einen iterativen Prozess indem ein template 80 mal aufgerufen wird und die Variable jeweils um eins erhoeht wird und du daduarch den suchstring dynamisch bildest. Habe das Ganze aber nicht getestet und meine XSL coding ist schon etwas eingerostet ;-)

  
    <xsl:template match="*">  
         <!-- rufe die loop-Schleife auf -->  
        <xsl:call-template name="loop"/>  
    </xsl:template>  
  
    <!-- loop template mit start groesse eins -->  
    <xsl:template name="loop">  
      <xsl:param name="number" select="1"/>  
        <!-- zahlen kleiner neun um zweite digit erweitern -->  
        <xsl:variable name="searchString">  
            <xsl:choose>  
                <xsl:when test="$number > 9">  
                    <xsl:value-of select="concat('e',$number)"/>  
                </xsl:when>  
                <xsl:otherwise>  
                    <xsl:value-of select="concat('e0',$number)"/>  
                </xsl:otherwise>  
            </xsl:choose>  
        </xsl:variable>  
        <!-- schreibe td element -->  
        <xsl:element name="td">  
            <xsl:value-of select="name(@*[contains(.,$searchString)])"/>  
        </xsl:element>  
        <!-- erhoehe number um eins und start erneut abfrage bis number gleich 80 -->  
        <xsl:if test="$number != 80">  
            <xsl:call-template name="loop">  
                <xsl:with-param name="number" select="$number + 1"/>  
            </xsl:call-template>  
        </xsl:if>  
    </xsl:template>  
  

Du sollltest auch nachdenken deinen XPATH Abfrage zu optimieren, da dein XPATH Angabe alle gueltigen knoten erfasst. Zu Beispiel nur den ersten Knoten name(@*[contains(.,$searchString)][1])

Gruss Holge r