<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:str="http://example.org/xslt/functions" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs str" version="2.0"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:text>str:reverse('DOG BITES MAN') = </xsl:text> <xsl:value-of select="str:reverse('DOG BITES MAN')"/> </xsl:template> <xsl:function name="str:reverse" as="xs:string"> <xsl:param name="sentence" as="xs:string"/> <xsl:sequence select="if (contains($sentence, ' ')) then concat(str:reverse(substring-after($sentence, ' ')), ' ', substring-before($sentence, ' ')) else $sentence"/> </xsl:function> </xsl:stylesheet>