Hi,
I had a look in the archives before posting, and am
not sure I understand the method which uses:
<xsl:sort select="*[name(.) = $sortfield]"/>
Expression
*[name(.) = $sortfield]
will return a node-set of elements whose name equal the string value of the
variable sortfield. In xsl:sort the result is converted to a string, thus if
the node-set contains more that one node, the string value of the first node in
the set is used as the sort key.
I have tried, in my code to have:
<xsl:for-each select="file">
<xsl:choose>
<xsl:when test="$sort='design'"><xsl:sort
select="name"/></xsl:when>
See the spec <http://www.w3.org/TR/xslt#element-sort>:
"When used in xsl:for-each, xsl:sort elements must occur first."
The way around this is e.g.
<xsl:variable name="sortkey">
<xsl:choose>
<xsl:when test="$sort='design'">name</xsl:when>
<xsl:when test="$sort='stat'">status</xsl:when>
<xsl:otherwise>id</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="file">
<xsl:sort select="*[name() = $sortkey]"/>
...
</xsl:for-each>
Cheers,
Jarno - VNV Nation: Electronaut