Hallo Thomas,
ja, nd es tut das auch.
was genau funktioniert nicht so wie du es willst?
er parst beide tags (Fall1 und Fall2)
</input></p>
^^^^^^^^^^^^
das solltest du in der form eher nicht machen.
muss so sein, sonst moniert der xslt-Prozessor das fehlende End-tag
mit <xsl:output method="html" indent="yes" /> ist die Ausgabe dann wieder html-konform.
Gruß
Paul
Hier nochmal das komplette Sheet:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" />
<xsl:template match="/">
<xsl:for-each select="//*">
<xsl:variable name="position" select="position()"/>
<xsl:call-template name="tag">
<xsl:with-param name="id" select="$position"/>
</xsl:call-template>
<xsl:for-each select="@*">
<xsl:call-template name="att">
<xsl:with-param name="id" select="$position"/>
</xsl:call-template>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="att">
<xsl:param name="id"/>
<p> <xsl:attribute name="class">formfield</xsl:attribute>
<xsl:value-of select="name()"/>xsl:text: </xsl:text>
<input>
<xsl:attribute name="name">@<xsl:value-of select="local-name()"/><xsl:value-of select="$id"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
</input></p>
</xsl:template>
<xsl:template name="tag">
<xsl:param name="id"/>
<xsl:if test="child::text()">
<p> <xsl:attribute name="class">formfield</xsl:attribute>
<xsl:value-of select="name()"/>xsl:text: </xsl:text>
<input>
<xsl:attribute name="name"><xsl:value-of select="local-name()"/><xsl:value-of select="$id"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
</input></p>
</xsl:if>
</xsl:template>
</xsl:stylesheet>