Here's an XSLT 2.0 option using tokenize()
...
XML Input
<doc>
<theName>Fitzerald, John K., MBBS</theName>
<theName> Fitzerald , John K. , MBBS </theName>
<theName>Keane, Mike</theName>
</doc>
XSLT 2.0
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="theName">
<xsl:variable name="tokens"
select="for $token in tokenize(.,',') return normalize-space($token)"/>
<xsl:copy>
<xsl:value-of select="($tokens[2],$tokens[1],$tokens[3])" separator=" "/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Output
<doc>
<theName>John K. Fitzerald MBBS</theName>
<theName>John K. Fitzerald MBBS</theName>
<theName>Mike Keane</theName>
</doc>