xsltc.setClassName(transletName);
// Get java-legal class name from XSLTC module
transletName = xsltc.getClassName();
Stylesheet stylesheet = null;
SyntaxTreeNode root = _parser.getDocumentRoot();
// Compile the translet - this is where the work is done!
if (!_parser.errorsFound() && root != null) {
// Create a Stylesheet element from the root node
stylesheet = _parser.makeStylesheet(root);
stylesheet.setSystemId(_systemId);
stylesheet.setParentStylesheet(null);
if (xsltc.getTemplateInlining())
stylesheet.setTemplateInlining(true);
else
stylesheet.setTemplateInlining(false);
// Set a document loader (for xsl:include/import) if defined
if (_uriResolver != null) {
stylesheet.setSourceLoader(this);
}
_parser.setCurrentStylesheet(stylesheet);
// Set it as top-level in the XSLTC object
xsltc.setStylesheet(stylesheet);
// Create AST under the Stylesheet element
_parser.createAST(stylesheet);
}
// Generate the bytecodes and output the translet class(es)
if (!_parser.errorsFound() && stylesheet != null) {
stylesheet.setMultiDocument(xsltc.isMultiDocument());
stylesheet.setHasIdCall(xsltc.hasIdCall());
// Class synchronization is needed for BCEL
synchronized (xsltc.getClass()) {
stylesheet.translate();
}
}
if (!_parser.errorsFound()) {
// Check that the transformation went well before returning