Thomas J.S.: auch nicht ... jetzt aber ;-)

Beitrag lesen

Hallo Thomas,

Ein recursives Template:

großer Nachteil - fällt mir gerade auf - : wenn es zweimal dasselbe Zeichen vorkommt gibts eine Endlosschleife!

So kommt man auch zum Ziel:

*hehe* auch nicht, bei deinem Template würden die letzen zwei Inputs nicht mehr erzeugt, ich hatte as auch bei meinem zu spät gemerkt ... (tja, nach 9 Stunden Programmiererei darf man etwas müde sein ;-) )

Aber jetzt:

<xsl:template name="createinputelement">
 <xsl:param name="node" />
 <xsl:param name="counter" select="1" />
 <xsl:param name="input" select="substring($node,$counter,1)" />
 <xsl:variable name="nextinput" select="substring($node, $counter+1)" />
 xsl:choose
  <xsl:when test="string-length($nextinput) &gt;= 1">
   <input type="text" name="{concat(local-name($node), $counter)}" value="{$input}" /><br />
   <xsl:call-template name="createinputelement">
    <xsl:with-param name="node" select="$node" />
    <xsl:with-param name="counter" select="$counter +1" />
    <xsl:with-param name="input" select="substring($nextinput, 1, 1)" />
   </xsl:call-template>
  </xsl:when>
  xsl:otherwise
   <input type="text" name="{concat(local-name($node), $counter)}" value="{$input}" />
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>

Aufruf:

<xsl:for-each select="Frame">
<xsl:call-template name="createinputelement">
 <xsl:with-param name="node" select="." />
</xsl:call-template>
</xsl:for-each>

oder

<xsl:template match="Frame">
 <xsl:call-template name="createinputelement">
  <xsl:with-param name="node" select="." />
 </xsl:call-template>
</xsl:template>

Grüße
Thomas