This would seem to work
<xsl:element name="formatted_date">
<xsl:value-of select="substring(., 6, 2)"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="substring(., 9, 2)"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="substring(., 1, 4)"/>
<xsl:text> </xsl:text>
<xsl:if test="substring(., 12, 2) < 13">
<xsl:value-of select="substring(., 12, 2)"/>
<xsl:text>:</xsl:text>
<xsl:value-of select="substring(., 15, 2)"/>
<xsl:text> AM</xsl:text>
</xsl:if>
<xsl:if test="substring(., 12, 2) > 12">
<xsl:if test="substring(., 12, 2) > 21">
<xsl:value-of select="number(substring(., 12, 2)) -
12"/>
</xsl:if>
<xsl:if test="substring(., 12, 2) < 22">
<xsl:text>0</xsl:text><xsl:value-of
select="number(substring(., 12, 2)) - 12"/>
</xsl:if>
<xsl:text>:</xsl:text>
<xsl:value-of select="substring(., 15, 2)"/>
<xsl:text> PM</xsl:text>
</xsl:if>
</xsl:element>