<xsl:variable name='string'>Blah blah (Hello World) hihi</xsl:variable>
<xsl:message>
<xsl:value-of select="replace($string, '(\(|\))','\\$1')" />
</xsl:message>
Это будет работать для любой скобки. Ваш код также неполный. Что то? Содержит ли это значение, которое вы ожидаете? Вам не хватает символа> в конце xsl: value-of.
РЕДАКТИРОВАТЬ: После комментария @ Dimitre:
<xsl:variable name="rb">(</xsl:variable>
<xsl:variable name='string'>Blah blah (Hello World) hihi</xsl:variable>
<xsl:message>
<xsl:value-of select="replace($string, concat('\', $rb), concat('\\', $rb))" />
</xsl:message>
Выше были бы результаты, которые вы первоначально хотели, хотя я не вижу причин, чтобы предпочесть это по сравнению с моим исходным решением.