I would guess that the stylesheet was run on a document where <id>
wasn't a first child, that would generate the error quoted.
To fix that you want to change
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
to
<xsl:copy>
<xsl:apply-templates select="*[name()=$elnames]"/>
<xsl:apply-templates select="@* | node()[not(name()=$elnames)]"/>
</xsl:copy>
So that the elements that are going to become attributes get processed
first.
David
--
http://www.dcarlisle.demon.co.uk/matthew
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list