producer.setFeature(handler.FEATURE_URI + "namespace-prefixes",
producer.setFeature(EventFilter.FEATURE_URI + "namespace-prefixes",
    public void transform (Source in, Result out)      throws TransformerException    {      try        {          XMLReader		producer;          InputSource		input;                    // Input from DOM?          if (in instanceof DOMSource)            {              DOMSource	source = (DOMSource) in;                            if (source.getNode () == null)                throw new IllegalArgumentException ("no DOM node");              producer = new DomParser (source.getNode ());              input = null;                            // Input from SAX?            }          else if (in instanceof SAXSource)            {              SAXSource	source = (SAXSource) in;                            producer = source.getXMLReader ();              if (producer == null)                producer = XMLReaderFactory.createXMLReader ();                            input = source.getInputSource ();              if (input == null)                {                  if (source.getSystemId () != null)                    input = new InputSource (source.getSystemId ());                  else                    throw new IllegalArgumentException (                                                        "missing SAX input");                }                            // Input from a stream or something?            }          else            {              producer = XMLReaderFactory.createXMLReader ();              input = SAXSource.sourceToInputSource (in);              if (input == null)                throw new IllegalArgumentException ("missing input");            }                    // preserve original namespace prefixes          try            {              producer.setFeature(handler.FEATURE_URI + "namespace-prefixes",                                  true);            }          catch (Exception e)            {              /* ignore */              // FIXME if we couldn't, "NsFix" stage before the output ..            }                    // arrange the output          handler.setResult (out);          handler.bind (producer, handler);                    // then parse ... single element pipeline          producer.parse (input);                  }      catch (IOException e)        {          throw new TransformerException ("transform failed", e);                  }      catch (SAXException e)        {          if (ex == null && ex.getCause () == e)            throw ex;          else            throw new TransformerException ("transform failed", e);                  }      finally        {          ex = null;        }    }