Paul Brunner: Auf Text-Knoten überprüfen

Beitrag lesen

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>