try { baseID = SystemIDResolver.getAbsoluteURI(baseID); } catch (TransformerException te) { throw new TransformerConfigurationException(te); }
baseID = SystemIDResolver.getAbsoluteURI(baseID);
  public Templates newTemplates(Source source)          throws TransformerConfigurationException  {    TemplatesHandler builder = newTemplatesHandler();    String baseID = source.getSystemId();    if (null == baseID)    {      try      {        String currentDir = System.getProperty("user.dir");                if (currentDir.startsWith(java.io.File.separator))          baseID = "file://" + currentDir + java.io.File.separatorChar                   + source.getClass().getName();        else          baseID = "file:///" + currentDir + java.io.File.separatorChar                   + source.getClass().getName();      }      catch (SecurityException se)      {        // For untrusted applet case, user.dir is outside the sandbox         //  and not accessible: just leave baseID as null (-sb & -sc)      }    }    else    {      try      {        baseID = SystemIDResolver.getAbsoluteURI(baseID);      }      catch (TransformerException te)      {        throw new TransformerConfigurationException(te);      }    }    builder.setSystemId(baseID);    if (source instanceof DOMSource)    {      DOMSource dsource = (DOMSource) source;      Node node = dsource.getNode();      if (null != node)        return processFromNode(node, baseID);      else      {        String messageStr = XSLMessages.createMessage(          XSLTErrorResources.ER_ILLEGAL_DOMSOURCE_INPUT, null);        throw new IllegalArgumentException(messageStr);      }    }    try    {      InputSource isource = SAXSource.sourceToInputSource(source);      XMLReader reader = null;      if (source instanceof SAXSource)        reader = ((SAXSource) source).getXMLReader();              boolean isUserReader = (reader != null);      if (null == reader)      {        // Use JAXP1.1 ( if possible )        try        {          javax.xml.parsers.SAXParserFactory factory =            javax.xml.parsers.SAXParserFactory.newInstance();          factory.setNamespaceAware(true);          javax.xml.parsers.SAXParser jaxpParser = factory.newSAXParser();          reader = jaxpParser.getXMLReader();        }        catch (javax.xml.parsers.ParserConfigurationException ex)        {          throw new org.xml.sax.SAXException(ex);        }        catch (javax.xml.parsers.FactoryConfigurationError ex1)        {          throw new org.xml.sax.SAXException(ex1.toString());        }        catch (NoSuchMethodError ex2){}        catch (AbstractMethodError ame){}      }      if (null == reader)        reader = XMLReaderFactory.createXMLReader();      // If you set the namespaces to true, we'll end up getting double       // xmlns attributes.  Needs to be fixed.  -sb      // reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);      try      {        if(!isUserReader)          reader.setFeature("http://apache.org/xml/features/validation/dynamic",                            true);      }      catch (org.xml.sax.SAXException ex)      {        // feature not recognized      }      reader.setContentHandler(builder);      reader.parse(isource);    }    catch (org.xml.sax.SAXException se)    {      if (m_errorListener != null)      {        try        {          m_errorListener.fatalError(new TransformerException(se));        }        catch (TransformerException ex1)        {          throw new TransformerConfigurationException(ex1);        }      }      else        throw new TransformerConfigurationException(se.getMessage(), se);    }    catch (Exception e)    {      if (m_errorListener != null)      {        try        {          m_errorListener.fatalError(new TransformerException(e));          return null;        }        catch (TransformerException ex1)        {          throw new TransformerConfigurationException(ex1);        }      }      else        throw new TransformerConfigurationException(e.getMessage(), e);    }    return builder.getTemplates();  }