Can one assume all the PacketType names begin with the English name of a one-digit number, like ONE, FOUR, NINE? And this is followed by "_DH", then another digit? Because the programming for this depends very much on those assumptions.
I think your best approach is a two-phase transformation. The first phase adds an attribute to the PacketType which contains a sort key, for example translating ONE_DH5 to 15, and the second phase selects the last in sorted order. The translation of ONE_DH5 to 15 can be done by logic such as
<xsl:choose
<xsl:when tests="startsWith(packetType, 'ONE_')">
<xsl:text>1</xsl:text>
etc, and you can pick out the final digit with
xsl:value-of select="substring-after(packetType, '_DH')
There are a number of facilities in XSLT 2.0 that simplify the coding, for example you can use regular expressions, and you can also collapse it into a single phase of processing by using a stylesheet function to compute the sort key; but the basic logic is similar.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference