Let's take a look at XSLT produced by the following 'xml sel' command:
# Query XML document and produce sorted text table xml sel -T -t -m /xml/table/rec -s D:N:- "@id" \ -v "concat(@id,'|',numField,'|',stringField)" -n xml/table.xml
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="no" method="text"/>
<xsl:param name="inputFile">-</xsl:param>
<xsl:template match="/">
<xsl:call-template name="t1"/>
</xsl:template>
<xsl:template name="t1">
<xsl:for-each select="/xml/table/rec">
<xsl:sort order="descending" data-type="number"
case-order="upper-first" select="@id"/>
<xsl:value-of select="concat(@id,'|',numField,'|',stringField)"/>
<xsl:value-of select="' '"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
-s option of 'xml sel' command controls 'order', 'data-type', and 'case-order' attributes of <xsl:sort/> element .