this stylesheet will give you the output you specified. You can add back in all the html to make your page pretty...
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:key name="users" match="Position" use="UserID"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="Common/Rank/Position[generate-id()=generate-id(key('users', UserID)[1])]">
<xsl:sort select="sum(key('users', UserID)/Points)" data-type="number" order="descending"/>
<xsl:sort select="key('users', UserID)" data-type="text" order="ascending"/>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="Position">
User <xsl:value-of select="UserID"/> has <xsl:value-of select="sum(key('users', UserID)/Points)"/> points<br/>
</xsl:template>
</xsl:stylesheet>
hth
Phil