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>