why don't you test for 12AM with something like
<xsl:if test="substring(date,7,2) = 12">
<xsl:if test="substring(date,13,2) = 'am'">
<xsl:sort select="substring(date,10,2)" order="descending" data-type="number" /> <!-- min -->
<xsl:sort select="substring(date,13,2)"...