Let's look at your code and see what it means.
<xsl:template match="@*|node()">
This is processing any element or attribute (or text node, etc) that you apply-templates to. You never apply templates to an attribute node, so why have a template rule that matches one?
<xsl:apply-templates />
If you're processing an element, this causes all the children to be processed.
<xsl:for-each select="aircraft">
If you're processing an element with aircraft children, this causes the aircraft children to be processed a second time.
<xsl:sort select="../@value" />
You want the aircraft children to be sorted. But in your data, there is never more than one aircraft child, so sorting them has no effect. And even if there was more than one aircraft, the expression ../@value would return the same result for each one, so the sort would be meaningless.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference