Ваш XML плохо спроектирован;если возможно, вместо <value1>
вы должны использовать <value name="value1">
или что-то подобное.
Сказав это, вы можете сделать:
<xsl:template match="*[starts-with(name(),'value')]">
<xsl:element name="input">
<xsl:attribute name="type">hidden</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="." />
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="name()" />
</xsl:attribute>
</xsl:element>
</xsl:template>
Если бы вы были элементами <value name="value1">
совпадение становится просто match="value"
, что намного быстрее, а атрибут имени становится <xsl:value-of select="@name">
.