You're a bit confused, and you've succeeded in confusing me as well. If I've misunderstood the problem, please ignore.
The forum software doesn't help. I'm not seeing the same thing on the forum (in the browser) as I saw in the email notification. That could be because you edited the post after sending it (a very annoying thing when people do it!) or it could be because you didn't use the special forum markup for delimiting code sections. Or it could just be that the forum software is just trying to be too clever. Either way, I saw literal greater-than characters in the email version of your code, but XML ampersand-g-t-semicolon sequences in the forum version, and I don't know which is actually present in your code.
If the XML does contain ampersand-g-t-semicolon within a CDATA section, then that's bad, and when you get bad XML the best thing to do is find out where it came from and fix the process that generated it in the first place. If you can't achieve that, then repairing the XML is a poor second best. People who produce bad XML will carry on doing it unless people complain.
The CDATA section will appear to the XSLT stylesheet as an ordinary text node containing somewhere in the middle the four-character sequence ampersand-g-t-semicolon, which you want to replace with a single character, the greater-than-sign or right-angle-bracket. The translate() function only replaces single characters by single characters (or nothing). You want the XSLT 2.0 replace() function. If you're using XSLT 1.0, then either (a) switch to XSLT 2.0, or (b) download the source code of the EXSLT str:replace template (
www.exslt.org) which does string replacement in XSLT 1.0.