First, I don't know if the test will function at all since they are empty
elements.
A test requires a boolean, if you give it a node set (as here) it is
true if the node set is non empty, it doesn't matter what the nodes are
(they may be empty elements)
If they work, how would I (in future) be able to test if the element is
empty?
this is a FAQ (the faq for this list has several solutions depending on
what you mean by empty) test="node()" tests if the current element has
children which is the cannonical definition of empty.
probably you want something
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
<xsl:template match="lv">
<lv>
<xsl:apply-templates select="declaration"/>
</lv>
</xsl:template>
<xsl:template match="declaration">
<xsl:param name="state" select="../state/*"/>
<xsl:choose>
<xsl:when test="$state">
<xsl:element name="{name($state[1])}">
<xsl:apply-templates select=".">
<xsl:with-param name="state" select="$state[position()>1]"/>
</xsl:apply-templates>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="node()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list