When your output is XML, you need not create tags using CDATA. You can put the tags directly in the template. In you case, you can call your "tokenize" template using another template by passing required paramters like this, and let the called template just do the processing:
<xsl:template match="/">
<role_code>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="body/information/role_code"/>
</xsl:call-template>
</role_code>
</xsl:template>
Called template needn't have match attribute(in this case):
<xsl:template name="tokenize">
<xsl:param name="text" select="."/>
<xsl:param name="separator" select="','"/>
<!-- something -->
</xsl:template>