<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template name="rtf-encode">
<xsl:param name="str"/>
<xsl:param name="escMethod">1</xsl:param>
<xsl:if test="$str">
<xsl:for-each select="string-to-codepoints($str)">
<xsl:choose>
<xsl:when test=". = 92">\\</xsl:when>
<xsl:when test=". = 123">\{</xsl:when>
<xsl:when test=". = 125">\}</xsl:when>
<xsl:when test=". < 160">
<xsl:value-of select="codepoints-to-string(.)"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$escMethod=1">
<xsl:value-of select="concat('\u',.,'?')"/>
</xsl:when>
<xsl:when test="$escMethod=2">
<xsl:value-of select="concat('\''',.)"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>?</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:if>
</xsl:template>
</xsl:stylesheet>