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) >= 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