Thanks for the workaround, but it isn't working for me. Here is the significant part of my code:
package gov.irs.TFPOnlineProcessing;
import net.sf.saxon.s9api.Processor;
import net.sf.saxon.s9api.SaxonApiException;
import net.sf.saxon.s9api.Serializer;
import net.sf.saxon.s9api.XdmNode;
import net.sf.saxon.s9api.XsltCompiler;
import net.sf.saxon.s9api.XsltExecutable;
import net.sf.saxon.s9api.XsltTransformer;
public class SimpleTrans {
 public static void main(String[] args) {
  try {
  Processor proc = new Processor(false);
  XsltCompiler comp = proc.newXsltCompiler();
  XdmNode ss = proc.newDocumentBuilder().build(new File("c:/lib/xslt/tipx.xsl"));
  XsltExecutable exp = comp.compile(ss.asSource());
  XdmNode source = proc.newDocumentBuilder().build(new File("c:/p225.dxml"));
  Serializer out = new Serializer();
  out.setOutputProperty(Serializer.Property.METHOD, "xml");
  out.setOutputFile(new File("c:/p225_chartest.xml"));
  XsltTransformer trans = exp.load();
  catch (SaxonApiException sae) {
My stylesheet starts with:
<xsl:stylesheet version="2.0" xmlns:xsl="">
    <xsl:import href="common04.xsl"/>

    <xsl:import href="table.xsl"/>

    <xsl:output indent="yes" doctype-public="-//OASIS//DTD DocBook XML V4.2//EN" doctype-system="../../dtd/docbook.dtd" encoding="utf-8" omit-xml-declaration="no" version="1.0" use-character-maps="AccentureProblems"/>

    <xsl:character-map name="AccentureProblems">
        <xsl:output-character character="&#x2003;" string=" &amp;#x2003;" />
        <!-- ..... -->

I've tried changing to use us-ascii as the encoding, but the black box that I'm supplying to seems to have problems with that, so I really need to encode as utf-8. With the class I've shown and the stylesheet given, I get the message "Cannot use character maps in an environment with no Controller".
Any ideas on what could be different here?