Russ,
You are working in an environment where FM exports incorrect XML, so you need to find the best possible compromise for your situation. I assume you want to have the most accurate appearance in FM as well as correct XML. Possibilities include:
1. Adding a DTD to the environment. Your original question asked about using a schema instead of a DTD. Can you convert the schema to a DTD, for use only in FM import/export? You can remove references to the DTD with XSLT.
2. Using an empty element to insert this string as a prefix/suffix. You said it is not practical to add such an element.
3. Changing the string by inserting a space between the two square brackets or before the closing angle bracket. If you use a thin space in FM, the result might look almost correct, but the XML will not be. Again, you can correct it in XSLT.
4. Wrapping a do-nothing element around part of the string (for example, "<ph>]</ph>]]>")
Does your application involve a custom client? Or can you invoke an FDK client or script while saving to XML or opening XML? If so, your writers can enter the unmodified string in the FM documents, and the client or script can change it on the way out, with XSLT again cleaning up the result if necessary.
Good luck.
--Lynne