final Class clazz = loadTranslet(transletName);
final Class clazz = ObjectFactory.findProviderClass( transletName, ObjectFactory.findClassLoader(), true);
    public Templates newTemplates(Source source)	throws TransformerConfigurationException     {	// If the _useClasspath attribute is true, try to load the translet from	// the CLASSPATH and create a template object using the loaded	// translet.	if (_useClasspath) {	    String transletName = getTransletBaseName(source);	            	    if (_packageName != null)	        transletName = _packageName + "." + transletName;	        	    try {	        final Class clazz = loadTranslet(transletName);	        resetTransientAttributes();	            	        return new TemplatesImpl(new Class[]{clazz}, transletName, null, _indentNumber, this);	    }	    catch (ClassNotFoundException cnfe) {	        ErrorMsg err = new ErrorMsg(ErrorMsg.CLASS_NOT_FOUND_ERR, transletName);	        throw new TransformerConfigurationException(err.toString());	    }	    catch (Exception e) {	        ErrorMsg err = new ErrorMsg(                                     new ErrorMsg(ErrorMsg.RUNTIME_ERROR_KEY)                                     + e.getMessage());	        throw new TransformerConfigurationException(err.toString());	    }	}		// If _autoTranslet is true, we will try to load the bytecodes	// from the translet classes without compiling the stylesheet.	if (_autoTranslet)  {	    byte[][] bytecodes = null;	    String transletClassName = getTransletBaseName(source);	    	    if (_packageName != null)	        transletClassName = _packageName + "." + transletClassName;	    	    if (_jarFileName != null)	    	bytecodes = getBytecodesFromJar(source, transletClassName);	    else	    	bytecodes = getBytecodesFromClasses(source, transletClassName);	    	  	    if (bytecodes != null) {	    	if (_debug) {	      	    if (_jarFileName != null)	        	System.err.println(new ErrorMsg(	            	    ErrorMsg.TRANSFORM_WITH_JAR_STR, transletClassName, _jarFileName));	            else	            	System.err.println(new ErrorMsg(	            	    ErrorMsg.TRANSFORM_WITH_TRANSLET_STR, transletClassName));	    	}	    	// Reset the per-session attributes to their default values	    	// after each newTemplates() call.	    	resetTransientAttributes();	    	    	return new TemplatesImpl(bytecodes, transletClassName, null, _indentNumber, this);	    	    }	}		// Create and initialize a stylesheet compiler	final XSLTC xsltc = new XSLTC();	if (_debug) xsltc.setDebug(true);	if (_enableInlining) xsltc.setTemplateInlining(true);	xsltc.init();	// Set a document loader (for xsl:include/import) if defined	if (_uriResolver != null) {	    xsltc.setSourceLoader(this);	}	// Pass parameters to the Parser to make sure it locates the correct	// <?xml-stylesheet ...?> PI in an XML input document	if ((_piParams != null) && (_piParams.get(source) != null)) {	    // Get the parameters for this Source object	    PIParamWrapper p = (PIParamWrapper)_piParams.get(source);	    // Pass them on to the compiler (which will pass then to the parser)	    if (p != null) {		xsltc.setPIParameters(p._media, p._title, p._charset);	    }	}	// Set the attributes for translet generation	int outputType = XSLTC.BYTEARRAY_OUTPUT;	if (_generateTranslet || _autoTranslet) {	    // Set the translet name	    xsltc.setClassName(getTransletBaseName(source));	  	    if (_destinationDirectory != null)	    	xsltc.setDestDirectory(_destinationDirectory);	    else {	    	String xslName = getStylesheetFileName(source);	    	if (xslName != null) {	      	    File xslFile = new File(xslName);	            String xslDir = xslFile.getParent();	    	      	    if (xslDir != null)	                xsltc.setDestDirectory(xslDir);	    	}	    }	  	    if (_packageName != null)	        xsltc.setPackageName(_packageName);		    if (_jarFileName != null) {	    	xsltc.setJarFileName(_jarFileName);	    	outputType = XSLTC.BYTEARRAY_AND_JAR_OUTPUT;	    }	    else	    	outputType = XSLTC.BYTEARRAY_AND_FILE_OUTPUT;	}	// Compile the stylesheet	final InputSource input = Util.getInputSource(xsltc, source);	byte[][] bytecodes = xsltc.compile(null, input, outputType);	final String transletName = xsltc.getClassName();	// Output to the jar file if the jar file name is set.	if ((_generateTranslet || _autoTranslet)	   	&& bytecodes != null && _jarFileName != null) {	    try {	    	xsltc.outputToJar();	    }	    catch (java.io.IOException e) { }	}	// Reset the per-session attributes to their default values	// after each newTemplates() call.	resetTransientAttributes();	// Pass compiler warnings to the error listener	if (_errorListener != this) {	    try {		passWarningsToListener(xsltc.getWarnings());	    }	    catch (TransformerException e) {		throw new TransformerConfigurationException(e);	    }	}	else {	    xsltc.printWarnings();	}	// Check that the transformation went well before returning    if (bytecodes == null) {                ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR);        TransformerConfigurationException exc =  new TransformerConfigurationException(err.toString());                // Pass compiler errors to the error listener        if (_errorListener != null) {            passErrorsToListener(xsltc.getErrors());                        // As required by TCK 1.2, send a fatalError to the            // error listener because compilation of the stylesheet            // failed and no further processing will be possible.            try {                _errorListener.fatalError(exc);            } catch (TransformerException te) {                // well, we tried.            }            }        else {            xsltc.printErrors();        }        throw exc;    }	return new TemplatesImpl(bytecodes, transletName, 	    xsltc.getOutputProperties(), _indentNumber, this);    }