<xsl:template match="A">
<xsl:variable name="nodes" select="." />
<xsl:copy-of select="$nodes"/>
</xsl:template>
Обновлено на основе комментариев ..
Хорошо, я никогда не делал именно то, что вам нужно раньше, так что возьмите это с этой крошкой соли (я собираюсь это сделать).В основном вам нужно быть очень обеспокоенным двумя вещами: символами, которые требуют экранирования, и пробелами.В этом случае строка, которую empo дал вам в комментариях выше, это больше, чем вы ищете.Ниже приведен один из способов сделать вывод XSL следующим образом:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="A">
<input type="hidden" name="hiddenxml">
<xsl:attribute name="value">
<xsl:apply-templates select="." mode="id" />
</xsl:attribute>
</input>
</xsl:template>
<xsl:template match="*" mode="id" >
<xsl:text><</xsl:text><xsl:value-of select="name(.)" /><xsl:text>></xsl:text>
<xsl:apply-templates select="./*" mode="id" />
<xsl:value-of select="normalize-space(.)" />
<xsl:text></</xsl:text><xsl:value-of select="name(.)" /><xsl:text>></xsl:text>
</xsl:template>
</xsl:stylesheet>
Вам все еще нужно позаботиться о других символах, которые требуют экранирования, например "", и я считаю, что вы можете использовать перевод или замену для этих